diff --git a/android/app/build.gradle b/android/app/build.gradle index a6c22fb..eccc6b9 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,56 +1,19 @@ apply plugin: "com.android.application" apply plugin: "com.facebook.react" -apply plugin: "kotlin-android" apply plugin: "com.google.gms.google-services" apply plugin: "com.google.firebase.crashlytics" +apply plugin: "kotlin-android" apply plugin: "kotlin-kapt" +apply plugin: 'org.jetbrains.kotlin.plugin.compose' apply plugin: "androidx.navigation.safeargs.kotlin" -/** - * This is the configuration block to customize your React Native Android app. - * By default you don't need to apply any configuration, just uncomment the lines you need. - */ react { - /* Folders */ - // The root of your project, i.e. where "package.json" lives. Default is '../..' - // root = file("../../") - // The folder where the react-native NPM package is. Default is ../../node_modules/react-native - // reactNativeDir = file("../../node_modules/react-native") - // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen - // codegenDir = file("../../node_modules/@react-native/codegen") - // The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js - // cliFile = file("../../node_modules/react-native/cli.js") /* Variants */ // The list of variants to that are debuggable. For those we're going to // skip the bundling of the JS bundle and the assets. By default is just 'debug'. // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. debuggableVariants = ["productionDebug", "productionRelease"] - /* Bundling */ - // A list containing the node command and its flags. Default is just 'node'. - // nodeExecutableAndArgs = ["node"] - // - // The command to run when bundling. By default is 'bundle' - // bundleCommand = "ram-bundle" - // - // The path to the CLI configuration file. Default is empty. - // bundleConfig = file(../rn-cli.config.js) - // - // The name of the generated asset file containing your JS bundle - // bundleAssetName = "MyApplication.android.bundle" - // - // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' - // entryFile = file("../js/MyApplication.android.js") - // - // A list of extra flags to pass to the 'bundle' commands. - // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle - // extraPackagerArgs = [] - /* Hermes Commands */ - // The hermes compiler command to run. By default it is 'hermesc' - // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" - // - // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" - // hermesFlags = ["-O", "-output-source-map"] - // + /* Autolinking */ autolinkLibrariesWithApp() } @@ -60,27 +23,6 @@ react { */ def enableProguardInReleaseBuilds = false -/** - * The preferred build flavor of JavaScriptCore (JSC) - * - * For example, to use the international variant, you can use: - * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` - * - * The international variant includes ICU i18n library and necessary data - * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that - * give correct results when using with locales other than en-US. Note that - * this variant is about 6MiB larger per architecture than default. - */ -def jscFlavor = "org.webkit:android-jsc:+" - -/** - * Whether to load react from source or use the prepacked package - * - * Keep false for faster compilation and avoid the need for an NDK to be installed. - * Use true if you want to debug and modify RN source, say for patching. - */ -def reactNativeFromSource = BUILD_RN_FROM_SOURCE.toBoolean() - android { ndkVersion rootProject.ndkVersion buildToolsVersion rootProject.ext.buildToolsVersion @@ -91,14 +33,15 @@ android { applicationId "com.mendix.developerapp.mx10" minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion - versionCode 301 - versionName "3.0.1" + versionCode 514 + versionName "10.24.0" missingDimensionStrategy "react-native-camera", "general" testBuildType System.getProperty("testBuildType", "debug") testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" buildConfigField "boolean", "DETOX", "false" buildConfigField "String", "RUNTIME_URL", '""' buildConfigField "boolean", "OTA", "false" + manifestPlaceholders["cookieEncryption"] = project.hasProperty("mendixnative.cookieEncryption") ? project.property("mendixnative.cookieEncryption") : "false" } signingConfigs { debug { @@ -117,7 +60,7 @@ android { } release { Properties releaseProps = new Properties() - def propFile = new File('./local.properties') + def propFile = new File('./keystores/debug.keystore.properties') if (propFile.canRead()) { releaseProps.load(new FileInputStream(propFile)) @@ -169,13 +112,7 @@ android { dependencies { // React Native Core - if (reactNativeFromSource) { - implementation project(":ReactAndroid") - } else { - implementation "com.facebook.react:react-android" - } - - // Javascript engine + implementation "com.facebook.react:react-android:0.77.3" implementation("com.facebook.react:hermes-android") // Mendix dependencies diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 18da74b..e88169a 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> @@ -74,7 +73,7 @@ android:supportsRtl="true"> + diff --git a/android/app/src/main/assets/sample_apps.json b/android/app/src/main/assets/sample_apps.json index eef7c7e..2313e19 100644 --- a/android/app/src/main/assets/sample_apps.json +++ b/android/app/src/main/assets/sample_apps.json @@ -26,7 +26,7 @@ "id": "lato_bikes_app", "name": "Lato Bikes", "description": "Control your Lato Bike via your device", - "runtimeUrl": "https://lato-bicycles.mendixcloud.com", + "runtimeUrl": "https://customer.lato-bicycles.com", "backgroundImageName": "lato_bikes_app" }, { @@ -42,13 +42,6 @@ "description": "Showcases Atlas 3", "runtimeUrl": "https://atlasdesignsystem.mendixcloud.com", "backgroundImageName": "atlas_ref_app" - }, - { - "id": "mendix_ar", - "name": "Mendix AR", - "description": "Showcases possible Mendix AR applications", - "runtimeUrl": "https://ar-examples-2.mendixcloud.com", - "backgroundImageName": "ar_app" } ] -} +} \ No newline at end of file diff --git a/android/app/src/main/assets/sampleapps.zip b/android/app/src/main/assets/sampleapps.zip index 00270f9..317a947 100644 Binary files a/android/app/src/main/assets/sampleapps.zip and b/android/app/src/main/assets/sampleapps.zip differ diff --git a/android/app/src/main/java/com/mendix/developerapp/firebase/FirebaseMessagingService.kt b/android/app/src/main/java/com/mendix/developerapp/firebase/FirebaseMessagingService.kt index cebc310..3ad9eaf 100644 --- a/android/app/src/main/java/com/mendix/developerapp/firebase/FirebaseMessagingService.kt +++ b/android/app/src/main/java/com/mendix/developerapp/firebase/FirebaseMessagingService.kt @@ -66,7 +66,7 @@ class FirebaseMessagingService: com.google.firebase.messaging.FirebaseMessagingS val intent = Intent(Intent.ACTION_VIEW).apply { this.data = uri } - return PendingIntent.getActivity(context, MENDIX_AD_NOTIFICATION_ID, intent, PendingIntent.FLAG_ONE_SHOT) + return PendingIntent.getActivity(context, MENDIX_AD_NOTIFICATION_ID, intent, PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE) } private fun safeParseStringToUri(url: String?): Uri? { diff --git a/android/app/src/main/java/com/mendix/developerapp/utilities/EmptyDevLoadingViewController.kt b/android/app/src/main/java/com/mendix/developerapp/utilities/EmptyDevLoadingViewController.kt deleted file mode 100644 index 2043a2a..0000000 --- a/android/app/src/main/java/com/mendix/developerapp/utilities/EmptyDevLoadingViewController.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.mendix.developerapp.utilities - -import android.app.Activity -import android.view.View -import com.facebook.react.bridge.JavaJSExecutor -import com.facebook.react.bridge.JavaScriptExecutorFactory -import com.facebook.react.devsupport.DefaultDevLoadingViewImplementation -import com.facebook.react.devsupport.ReactInstanceDevHelper - -class EmptyDevLoadingViewController() : DefaultDevLoadingViewImplementation(EmptyReactInstanceDevHelper()) { - override fun showMessage(message: String) {} - override fun hide() {} - override fun updateProgress(status: String?, done: Int?, total: Int?) {} -} - -private class EmptyReactInstanceDevHelper : ReactInstanceDevHelper { - override fun onReloadWithJSDebugger(proxyExecutorFactory: JavaJSExecutor.Factory?) {} - - override fun onJSBundleLoadedFromServer() {} - - override fun toggleElementInspector() {} - - override fun getCurrentActivity(): Activity? = null - - override fun getJavaScriptExecutorFactory(): JavaScriptExecutorFactory? = null - - override fun createRootView(appKey: String?): View? = null - - override fun destroyRootView(rootView: View?) {} -} diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 103f006..1ca2394 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,4 +1,4 @@ - Make It Native 10 + Make It Native diff --git a/android/app/src/production/AndroidManifest.xml b/android/app/src/production/AndroidManifest.xml index dd90c0d..9467bb0 100644 --- a/android/app/src/production/AndroidManifest.xml +++ b/android/app/src/production/AndroidManifest.xml @@ -5,7 +5,7 @@ , + permissions: Array, requestCode: Int, listener: PermissionListener? ) { diff --git a/android/app/src/production/java/com/mendix/developerapp/loading/MendixProjectLoaderScreen.kt b/android/app/src/production/java/com/mendix/developerapp/loading/MendixProjectLoaderScreen.kt index 09d3588..2f1e246 100644 --- a/android/app/src/production/java/com/mendix/developerapp/loading/MendixProjectLoaderScreen.kt +++ b/android/app/src/production/java/com/mendix/developerapp/loading/MendixProjectLoaderScreen.kt @@ -45,7 +45,7 @@ fun MendixProjectLoaderScreen(viewModel: ProjectLoaderViewModel) { errorMessageTitle = stringResource(R.string.error_version_title) primaryButtonText = stringResource(R.string.button_min_versions_guide) secondaryButtonText = stringResource(R.string.button_custom_developer_app_guide) - primaryButtonOnPress = { viewModel.openInBrowser.invoke("https://docs.mendix.com/refguide/mobile/distributing-mobile-apps/building-native-apps/how-to-min-versions/") } + primaryButtonOnPress = { viewModel.openInBrowser.invoke("https://docs.mendix.com/refguide/mobile/getting-started-with-mobile/prerequisites/#get-min-app") } secondaryButtonOnPress = { viewModel.openInBrowser.invoke("https://docs.mendix.com/howto8/mobile/how-to-devapps/") } } diff --git a/android/app/src/production/java/com/mendix/developerapp/mendixapp/MendixProjectFragment.kt b/android/app/src/production/java/com/mendix/developerapp/mendixapp/MendixProjectFragment.kt index e4241ff..3f36f17 100644 --- a/android/app/src/production/java/com/mendix/developerapp/mendixapp/MendixProjectFragment.kt +++ b/android/app/src/production/java/com/mendix/developerapp/mendixapp/MendixProjectFragment.kt @@ -2,9 +2,8 @@ package com.mendix.developerapp.mendixapp import android.os.Bundle import androidx.navigation.fragment.findNavController -import com.facebook.react.devsupport.overrideDevLoadingViewController +import com.facebook.react.devsupport.DefaultDevLoadingViewImplementation import com.facebook.react.devsupport.setBundleDownloadListener -import com.mendix.developerapp.utilities.EmptyDevLoadingViewController import com.mendix.mendixnative.react.MxConfiguration class MendixProjectFragment : MendixProjectFragmentBase() { @@ -23,8 +22,10 @@ class MendixProjectFragment : MendixProjectFragmentBase() { // Setting up our download listener reactNativeHost.reactInstanceManager.devSupportManager.apply { setBundleDownloadListener(this, viewModel.devServerCallback) - overrideDevLoadingViewController(this, EmptyDevLoadingViewController()) } + + // This now uses built-in RN mechanism to show bundling progress. + DefaultDevLoadingViewImplementation.setDevLoadingEnabled(true); } override fun onCloseProjectSelected() { diff --git a/android/app/src/production/res/values/styles.xml b/android/app/src/production/res/values/styles.xml index c95f382..fa1169f 100644 --- a/android/app/src/production/res/values/styles.xml +++ b/android/app/src/production/res/values/styles.xml @@ -1,11 +1,11 @@ -