From aab88019f34f5559d1f70c7a11bec99a9754f492 Mon Sep 17 00:00:00 2001 From: Tommy Nguyen <4123478+tido64@users.noreply.github.com> Date: Thu, 27 Nov 2025 14:38:25 +0100 Subject: [PATCH 1/2] fix(android): allow passing `CMAKE_MAKE_PROGRAM` to underlying CMake call --- android/app/build.gradle | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 63d06658c..1ab8e0c19 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -100,12 +100,21 @@ android { resValue("string", "app_name", project.ext.react.appName) def cppStd = "-std=c++20" + def cmakeMakeProgram = System.getenv("CMAKE_MAKE_PROGRAM") + if (enableNewArchitecture) { + def cmakeArgs = [ + "-DANDROID_STL=c++_shared", + "-DPROJECT_BUILD_DIR=${buildDir}", + "-DREACT_ANDROID_DIR=${reactNativePath}/ReactAndroid", + ] + if (cmakeMakeProgram != null) { + cmakeArgs.add("-DCMAKE_MAKE_PROGRAM=${cmakeMakeProgram}") + } + externalNativeBuild { cmake { - arguments("-DANDROID_STL=c++_shared", - "-DPROJECT_BUILD_DIR=${buildDir}", - "-DREACT_ANDROID_DIR=${reactNativePath}/ReactAndroid") + arguments(*cmakeArgs) cppFlags(cppStd, "-frtti", "-fexceptions", "-DWITH_INSPECTOR=1") } } @@ -115,11 +124,18 @@ android { } } } else { + def cmakeArgs = [ + "-DANDROID_STL=c++_shared", + "-DREACT_COMMON_DIR=${reactNativePath}/ReactCommon", + "-DREACT_JNILIBS_DIR=${buildDir}/outputs/jniLibs", + ] + if (cmakeMakeProgram != null) { + cmakeArgs.add("-DCMAKE_MAKE_PROGRAM=${cmakeMakeProgram}") + } + externalNativeBuild { cmake { - arguments("-DANDROID_STL=c++_shared", - "-DREACT_COMMON_DIR=${reactNativePath}/ReactCommon", - "-DREACT_JNILIBS_DIR=${buildDir}/outputs/jniLibs") + arguments(*cmakeArgs) cppFlags(cppStd, "-Wall", "-Werror", "-frtti", "-fexceptions", "-DWITH_INSPECTOR=1") } } From 93a3328ae5c9e5b14d81d3bad02eeb76070df4e9 Mon Sep 17 00:00:00 2001 From: Tommy Nguyen <4123478+tido64@users.noreply.github.com> Date: Thu, 27 Nov 2025 14:08:57 +0100 Subject: [PATCH 2/2] ktlint breaking changes --- .../microsoft/reacttestapp/camera/MainActivityExtensions.kt | 2 ++ .../main/java/com/microsoft/reacttestapp/MainActivity.kt | 6 ++++++ .../com/microsoft/reacttetapp/react/MainReactNativeHost.kt | 1 + 3 files changed, 9 insertions(+) diff --git a/android/app/src/camera/java/com/microsoft/reacttestapp/camera/MainActivityExtensions.kt b/android/app/src/camera/java/com/microsoft/reacttestapp/camera/MainActivityExtensions.kt index f608eb0cb..149672fd3 100644 --- a/android/app/src/camera/java/com/microsoft/reacttestapp/camera/MainActivityExtensions.kt +++ b/android/app/src/camera/java/com/microsoft/reacttestapp/camera/MainActivityExtensions.kt @@ -33,6 +33,7 @@ fun MainActivity.scanForQrCode() { } fragment.show(supportFragmentManager, QRCodeScannerFragment.TAG) } + shouldShowRequestPermissionRationale(Manifest.permission.CAMERA) -> { Snackbar .make( @@ -49,6 +50,7 @@ fun MainActivity.scanForQrCode() { } .show() } + else -> { ActivityCompat.requestPermissions( this, diff --git a/android/app/src/main/java/com/microsoft/reacttestapp/MainActivity.kt b/android/app/src/main/java/com/microsoft/reacttestapp/MainActivity.kt index 185fbcf68..56a6cd55b 100644 --- a/android/app/src/main/java/com/microsoft/reacttestapp/MainActivity.kt +++ b/android/app/src/main/java/com/microsoft/reacttestapp/MainActivity.kt @@ -201,21 +201,25 @@ class MainActivity : ReactActivity() { reload(BundleSource.Disk) true } + R.id.load_from_dev_server -> { PackagerConnectionSettings(this).debugServerHost = "" reload(BundleSource.Server) true } + R.id.remember_last_component -> { val enable = !menuItem.isChecked menuItem.isChecked = enable session.shouldRememberLastComponent = enable true } + R.id.scan_qr_code -> { scanForQrCode() true } + R.id.show_dev_options -> { val devSupportManager = if (BuildConfig.REACTAPP_USE_BRIDGELESS) { (application as TestApp).reactHost.devSupportManager @@ -225,6 +229,7 @@ class MainActivity : ReactActivity() { devSupportManager?.showDevOptionsDialog() true } + else -> false } } @@ -254,6 +259,7 @@ class MainActivity : ReactActivity() { .newInstance(component) .show(supportFragmentManager, ComponentBottomSheetDialogFragment.TAG) } + else -> { findActivityClass(component.name)?.let { startActivity(Intent(this, it)) diff --git a/android/app/src/reacthost-0.76/java/com/microsoft/reacttetapp/react/MainReactNativeHost.kt b/android/app/src/reacthost-0.76/java/com/microsoft/reacttetapp/react/MainReactNativeHost.kt index d1eaaa447..87a72498b 100644 --- a/android/app/src/reacthost-0.76/java/com/microsoft/reacttetapp/react/MainReactNativeHost.kt +++ b/android/app/src/reacthost-0.76/java/com/microsoft/reacttetapp/react/MainReactNativeHost.kt @@ -108,6 +108,7 @@ class MainReactNativeHost( BundleSource.Action.RELOAD -> { reactInstanceManager.devSupportManager.handleReloadJS() } + BundleSource.Action.RESTART -> { if (activity !is MainActivity) { activity.navigateUpTo(Intent(application, MainActivity.Companion::class.java))