From c0a9667808ec02e80c9949d9bc73504518878416 Mon Sep 17 00:00:00 2001 From: Kudo Chien Date: Wed, 7 Jun 2023 15:37:48 +0800 Subject: [PATCH] Upgrade react-native 0.72.0-rc.5 (#22588) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Why upgrade react-native 0.72 for sdk 49 close ENG-8011 # How - bump package versions - `react-native 0.71.3 -> 0.72.0-rc.5` - `metro-react-native-babel-preset 0.73.9 -> 0.76.5` - [bare-expo][templates][fabric-tester] migrate template base on [upgrade-helper](https://react-native-community.github.io/upgrade-helper/?from=0.71.7&to=0.72.0-rc.5) - [expo-template-tabs] remove the metro version overrides for expo-router. - [core][dev-laucher][dev-menu][media-library][screen-orientation][splash-screen][updates-interface][updates] add the `install_modules_dependencies` to support new architecture + use_frameworks! - [core][autolinking] fix some new architecture error on ios - [react-native-lab] update our fork to 0.72.0-rc.5 based - [go][tools] fix **react-native-lab/react-native/packages/react-native** path move because of react-native's repo monorepo changes - [go][android] fix gradle 8 errors - [go][ios] add `RCT_REMOTE_PROFILE=0` to fix the `RCT_ENABLE_INSPECTOR needs to be set to fulfill RCT_REMOTE_PROFILE` build error - [ncl] remove `ProgressViewIOS` / `ProgressBarAndroid` since they are deprecated/removed in 0.72 - [dev-menu][dev-launcher] rebuild bundles # Note - react-native-web is not bumped because of the [issue](https://github.com/necolas/react-native-web/issues/2523), so it's still react-native-web@~0.18.10. - currently disable ci typecheck for @expo/cli because of upstream metro typescript support. i'll have another pr to fix those errors. - updates e2e ci on android is broken at [here](https://github.com/expo/expo/blob/fada3d764957779fbfc3d7b723d185db1d933d95/packages/expo-updates/e2e/fixtures/Updates.e2e.ts#L518). i doubt if that's related to the react scheduler change. i'd disabled the failed test case. - the react-native upstream [migrated away the `@types/jest`](https://github.com/facebook/react-native/pull/36068). i was afraid that will be a breaking change to the existing jest test code since it requires the explicit `@jest/globals` import. i didn't do this in this upgrade. # Test Plan - โœ… fabric-tester (without expo-dev-client) - โœ… ci passed. there are some errors which are known: - updates e2e on android: as mentioned above - ios expo go on eas build: versioned expo go are broken on eas build m1 worker. this is also happening on main. - android client: no space left on the ubuntu worker. this is also happening on main. - โœ… bare-expo - โœ… unversioned expo go + ncl --------- Co-authored-by: Tomasz Sapeta --- .github/actions/expo-caches/action.yml | 14 +- .../android-instrumentation-tests.yml | 2 +- .github/workflows/cli.yml | 6 +- android/build.gradle | 8 +- android/expoview/build.gradle | 22 +- android/settings.gradle | 8 +- .../tools/ReactAndroidCodeTransformer.java | 2 +- .../react-native-skia/android/build.gradle | 31 +- .../android/build.gradle | 2 +- .../android/build.gradle | 10 +- .../react-native-screens/android/build.gradle | 2 +- .../react-native-skia/android/build.gradle | 25 +- .../android/build.gradle | 8 +- .../react-native-svg/android/build.gradle | 2 +- .../react-native-skia/android/build.gradle | 27 +- .../android/build.gradle | 8 +- .../react-native-svg/android/build.gradle | 4 +- .../expoview-abi47_0_0/build.gradle | 4 +- .../expoview-abi48_0_0/build.gradle | 4 +- apps/bare-expo/android/app/build.gradle | 52 +- .../java/dev/expo/payments/MainActivity.java | 5 +- .../res/drawable/rn_edit_text_material.xml | 2 +- apps/bare-expo/android/build.gradle | 5 +- apps/bare-expo/android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- apps/bare-expo/android/settings.gradle | 2 +- .../ios/BareExpo.xcodeproj/project.pbxproj | 4 + apps/bare-expo/ios/BareExpo/AppDelegate.mm | 10 - apps/bare-expo/ios/Podfile | 3 - apps/bare-expo/ios/Podfile.lock | 587 ++-- apps/bare-expo/package.json | 2 +- apps/eas-expo-go/eas.json | 2 +- .../scripts/eas-build-post-install.sh | 12 +- apps/fabric-tester/android/app/build.gradle | 70 +- .../android/app/src/main/AndroidManifest.xml | 4 +- .../community/fabrictester/MainActivity.java | 5 +- .../res/drawable/rn_edit_text_material.xml | 2 +- apps/fabric-tester/android/build.gradle | 2 +- apps/fabric-tester/android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- apps/fabric-tester/android/settings.gradle | 2 +- apps/fabric-tester/ios/Podfile | 33 +- apps/fabric-tester/ios/Podfile.lock | 1784 ++++++++----- .../fabric-tester/ios/Podfile.properties.json | 2 +- .../fabrictester.xcodeproj/project.pbxproj | 20 + .../ios/fabrictester/AppDelegate.mm | 10 - .../ios/fabrictester/Supporting/Expo.plist | 4 +- apps/fabric-tester/package.json | 2 +- apps/jest-expo-mock-generator/package.json | 2 +- apps/native-component-list/package.json | 2 +- .../ExpoComponentsStackNavigator.tsx | 12 - .../src/screens/ExpoComponentsScreen.tsx | 2 - .../src/screens/ProgressBarAndroidScreen.tsx | 73 - .../src/screens/ProgressViewIOSScreen.tsx | 55 - .../src/screens/TextInputScreen.tsx | 2 +- apps/native-tests/package.json | 2 +- apps/sandbox/package.json | 2 +- apps/test-suite/package.json | 2 +- home/package.json | 2 +- ios/Exponent.xcodeproj/project.pbxproj | 2 + .../Supporting/EXBuildConstants.plist.example | 2 +- ios/Podfile | 9 +- ios/Podfile.lock | 735 ++--- .../ABI47_0_0RNReanimated.podspec.json | 1 + .../ABI48_0_0RNReanimated.podspec.json | 1 + .../RNReanimated.podspec.json | 2 +- package.json | 2 +- packages/@expo/cli/CHANGELOG.md | 1 + .../metro/__tests__/metroErrors.test.ts | 4 +- .../__tests__/withMetroResolvers.test.ts | 4 +- packages/@expo/config-plugins/CHANGELOG.md | 1 + .../__snapshots__/Updates-test.ts.snap | 53 +- .../__tests__/__snapshots__/Maps-test.ts.snap | 33 - packages/@expo/metro-config/CHANGELOG.md | 1 + .../metro-config/build/ExpoMetroConfig.js | 2 - .../metro-config/build/ExpoMetroConfig.js.map | 2 +- .../@expo/metro-config/src/ExpoMetroConfig.ts | 1 - packages/@expo/prebuild-config/CHANGELOG.md | 2 + .../withDefaultPlugins-test.ts.snap | 2 +- packages/babel-preset-expo/CHANGELOG.md | 4 + packages/babel-preset-expo/package.json | 2 +- packages/expo-dev-launcher/CHANGELOG.md | 1 + .../assets/expo_dev_launcher_android.bundle | 2355 +++++++++-------- .../expo-dev-launcher.podspec | 7 + packages/expo-dev-launcher/ios/main.jsbundle | 2355 +++++++++-------- packages/expo-dev-launcher/package.json | 2 +- packages/expo-dev-menu/CHANGELOG.md | 1 + .../assets/EXDevMenuApp.android.js | 1696 ++++++------ .../expo-dev-menu/assets/EXDevMenuApp.ios.js | 1696 ++++++------ packages/expo-dev-menu/expo-dev-menu.podspec | 6 + packages/expo-dev-menu/package.json | 2 +- packages/expo-image/CHANGELOG.md | 1 + .../expo-image/build/ExpoImage.web.d.ts.map | 2 +- packages/expo-image/build/ExpoImage.web.js | 4 +- .../expo-image/build/ExpoImage.web.js.map | 2 +- packages/expo-image/src/ExpoImage.web.tsx | 1 + packages/expo-media-library/CHANGELOG.md | 2 + .../ios/EXMediaLibrary.podspec | 7 + .../expo-modules-autolinking/CHANGELOG.md | 2 + .../scripts/ios/cocoapods/sandbox.rb | 13 +- packages/expo-modules-core/CHANGELOG.md | 1 + .../expo-modules-core/ExpoModulesCore.podspec | 31 +- .../ios/RCTComponentData+Privates.h | 17 + .../ios/RCTComponentData+Privates.m | 15 + .../ios/Swift/Views/ComponentData.swift | 2 +- packages/expo-screen-orientation/CHANGELOG.md | 2 + .../ios/EXScreenOrientation.podspec | 7 + packages/expo-splash-screen/CHANGELOG.md | 2 + .../ios/EXSplashScreen.podspec | 7 + packages/expo-updates-interface/CHANGELOG.md | 2 + .../ios/EXUpdatesInterface.podspec | 7 +- packages/expo-updates/CHANGELOG.md | 1 + .../expo-updates/e2e/fixtures/Updates.e2e.ts | 2 +- packages/expo-updates/ios/EXUpdates.podspec | 7 + packages/expo/CHANGELOG.md | 1 + packages/expo/bundledNativeModules.json | 2 +- packages/expo/package.json | 2 +- react-native-lab/react-native | 2 +- .../android/app/build.gradle | 53 +- .../java/com/helloworld/MainActivity.java | 5 +- .../res/drawable/rn_edit_text_material.xml | 2 +- .../android/build.gradle | 2 +- .../android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- .../android/settings.gradle | 2 +- .../ios/HelloWorld/AppDelegate.mm | 10 - .../expo-template-bare-minimum/ios/Podfile | 3 - .../expo-template-bare-minimum/package.json | 2 +- .../package.json | 2 +- templates/expo-template-blank/package.json | 2 +- templates/expo-template-tabs/package.json | 44 +- tools/src/vendoring/config/expoGoConfig.ts | 10 +- .../vendoring/config/react-native-skia.patch | 14 +- yarn.lock | 825 +++--- 134 files changed, 6788 insertions(+), 6305 deletions(-) delete mode 100644 apps/native-component-list/src/screens/ProgressBarAndroidScreen.tsx delete mode 100644 apps/native-component-list/src/screens/ProgressViewIOSScreen.tsx create mode 100644 packages/expo-modules-core/ios/RCTComponentData+Privates.m diff --git a/.github/actions/expo-caches/action.yml b/.github/actions/expo-caches/action.yml index e9da96acbc3bbd..445b45503b93a9 100644 --- a/.github/actions/expo-caches/action.yml +++ b/.github/actions/expo-caches/action.yml @@ -175,14 +175,14 @@ runs: uses: actions/cache@v3 with: path: android/prebuiltHermes - key: hermes-engine-aar-v2-${{ hashFiles('react-native-lab/react-native/sdks/.hermesversion') }} + key: hermes-engine-aar-v2-${{ hashFiles('react-native-lab/react-native/packages/react-native/sdks/.hermesversion') }} - name: Check hermes-engine cache-hit if: inputs.hermes-engine-aar == 'true' id: cache-hermes-engine-aar shell: bash run: | CURRENT_VERSION=$(test -f android/prebuiltHermes/.hermesversion && cat android/prebuiltHermes/.hermesversion) || true - TARGET_VERSION=$(test -f react-native-lab/react-native/sdks/.hermesversion && cat react-native-lab/react-native/sdks/.hermesversion) || true + TARGET_VERSION=$(test -f react-native-lab/react-native/packages/react-native/sdks/.hermesversion && cat react-native-lab/react-native/packages/react-native/sdks/.hermesversion) || true if [[ $CURRENT_VERSION == $TARGET_VERSION ]]; then echo "cache-hit=true" >> $GITHUB_OUTPUT else @@ -195,11 +195,11 @@ runs: # Ensure node packages are installed when yarn-workspace cache miss yarn install --frozen-lockfile mkdir -p prebuiltHermes - cp -f ../react-native-lab/react-native/sdks/.hermesversion prebuiltHermes/ - ./gradlew :ReactAndroid:hermes-engine:assembleRelease - ./gradlew :ReactAndroid:hermes-engine:assembleDebug - cp -f ../react-native-lab/react-native/ReactAndroid/hermes-engine/build/outputs/aar/hermes-engine-release.aar prebuiltHermes/ - cp -f ../react-native-lab/react-native/ReactAndroid/hermes-engine/build/outputs/aar/hermes-engine-debug.aar prebuiltHermes/ + cp -f ../react-native-lab/react-native/packages/react-native/sdks/.hermesversion prebuiltHermes/ + ./gradlew :packages:react-native:ReactAndroid:hermes-engine:assembleRelease + ./gradlew :packages:react-native:ReactAndroid:hermes-engine:assembleDebug + cp -f ../react-native-lab/react-native/packages/react-native/ReactAndroid/hermes-engine/build/outputs/aar/hermes-engine-release.aar prebuiltHermes/ + cp -f ../react-native-lab/react-native/packages/react-native/ReactAndroid/hermes-engine/build/outputs/aar/hermes-engine-debug.aar prebuiltHermes/ env: # Reset reactNativeArchitectures to build all architectures ORG_GRADLE_PROJECT_reactNativeArchitectures: diff --git a/.github/workflows/android-instrumentation-tests.yml b/.github/workflows/android-instrumentation-tests.yml index 91f9cf1398c5e9..dab4ff4a33050c 100644 --- a/.github/workflows/android-instrumentation-tests.yml +++ b/.github/workflows/android-instrumentation-tests.yml @@ -35,7 +35,7 @@ concurrency: jobs: test: runs-on: macos-12 - timeout-minutes: 120 + timeout-minutes: 150 env: ORG_GRADLE_PROJECT_reactNativeArchitectures: x86_64 GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=1024m diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml index 8c6e516b1e0e57..e9d8f5884cbf1d 100644 --- a/.github/workflows/cli.yml +++ b/.github/workflows/cli.yml @@ -40,9 +40,9 @@ jobs: - name: ๐Ÿงถ Install node modules in root dir if: steps.expo-caches.outputs.yarn-workspace-hit != 'true' run: yarn install --frozen-lockfile - - name: ๐Ÿ”Ž Type Check CLI - run: yarn typecheck - working-directory: packages/@expo/cli + # - name: ๐Ÿ”Ž Type Check CLI + # run: yarn typecheck + # working-directory: packages/@expo/cli - name: ๐Ÿ›  Build CLI run: yarn prepare working-directory: packages/@expo/cli diff --git a/android/build.gradle b/android/build.gradle index 2d9fa93af45cce..6303b9e96cb5b8 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -42,7 +42,7 @@ plugins { // WHEN_DISTRIBUTING_REMOVE_TO_HERE def reactProperties = new Properties() -file("${project(':ReactAndroid').projectDir}/gradle.properties").withInputStream { reactProperties.load(it) } +file("${project(':packages:react-native:ReactAndroid').projectDir}/gradle.properties").withInputStream { reactProperties.load(it) } allprojects { repositories { @@ -91,13 +91,13 @@ allprojects { // WHEN_DISTRIBUTING_REMOVE_FROM_HERE resolutionStrategy.dependencySubstitution { substitute(module("com.facebook.react:react-native")) - .using(project(":ReactAndroid")) + .using(project(":packages:react-native:ReactAndroid")) .because("Building React Native from source") substitute(module("com.facebook.react:react-native:+")) - .using(project(":ReactAndroid")) + .using(project(":packages:react-native:ReactAndroid")) .because("Building React Native from source") substitute(module("com.facebook.react:react-android")) - .using(project(":ReactAndroid")) + .using(project(":packages:react-native:ReactAndroid")) .because("Building React Native from source") } // WHEN_DISTRIBUTING_REMOVE_TO_HERE diff --git a/android/expoview/build.gradle b/android/expoview/build.gradle index c3333aa3f5204f..c21046e4165ca2 100644 --- a/android/expoview/build.gradle +++ b/android/expoview/build.gradle @@ -6,27 +6,19 @@ apply plugin: 'kotlin-kapt' apply from: new File(rootDir, "versioning_linking.gradle") def reactProperties = new Properties() -file("${project(':ReactAndroid').projectDir}/gradle.properties").withInputStream { reactProperties.load(it) } +file("${project(':packages:react-native:ReactAndroid').projectDir}/gradle.properties").withInputStream { reactProperties.load(it) } // WHEN_VERSIONING_REMOVE_FROM_HERE //maven repository info group = 'host.exp.exponent' version = '45.0.0' -// Creating sources with comments -task androidSourcesJar(type: Jar) { - classifier = 'sources' - from android.sourceSets.main.java.srcDirs -} - afterEvaluate { publishing { publications { // use `versionedRelease` configuration when publishing to maven versionedRelease(MavenPublication) { from components.versionedRelease - // Add additional sourcesJar to artifacts - artifact(androidSourcesJar) } } repositories { @@ -40,7 +32,7 @@ afterEvaluate { def prebuiltHermesDir = findProperty("expo.prebuiltHermesDir") ?: file("${rootDir}/prebuiltHermes") def prebuiltHermesVersion = file("${prebuiltHermesDir}/.hermesversion").exists() ? file("${prebuiltHermesDir}/.hermesversion").text : null -def currentHermesVersion = file("${project(':ReactAndroid').projectDir}/../sdks/.hermesversion").exists() ? file("${project(':ReactAndroid').projectDir}/../sdks/.hermesversion").text : null +def currentHermesVersion = file("${project(':packages:react-native:ReactAndroid').projectDir}/../sdks/.hermesversion").exists() ? file("${project(':packages:react-native:ReactAndroid').projectDir}/../sdks/.hermesversion").text : null def buildHermesSource = currentHermesVersion != prebuiltHermesVersion logger.info(":expoview - buildHermesSource[${buildHermesSource}]") @@ -132,6 +124,12 @@ android { // use `versionedRelease` configuration when publishing to maven defaultPublishConfig "versionedRelease" + + publishing { + singleVariant("release") { + withSourcesJar() + } + } } // WHEN_VERSIONING_REMOVE_FROM_HERE @@ -190,13 +188,13 @@ dependencies { api 'org.webkit:android-jsc:r250231' // needs to be before react-native - api project(':ReactAndroid') + api project(':packages:react-native:ReactAndroid') if (!buildHermesSource) { debugImplementation(files("${prebuiltHermesDir}/hermes-engine-debug.aar")) releaseImplementation(files("${prebuiltHermesDir}/hermes-engine-release.aar")) } else { - implementation(project(':ReactAndroid:hermes-engine')) { + implementation(project(':packages:react-native:ReactAndroid:hermes-engine')) { exclude(group:'com.facebook.fbjni', module: 'fbjni') } } diff --git a/android/settings.gradle b/android/settings.gradle index 9171776430730d..28472d406d54d5 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -16,10 +16,10 @@ includeBuild('../react-native-lab/react-native/packages/react-native-gradle-plug include ':expoview' include ':tools' -include ':ReactAndroid' -project(':ReactAndroid').projectDir = new File(rootDir, '../react-native-lab/react-native/ReactAndroid') -include ':ReactAndroid:hermes-engine' -project(':ReactAndroid:hermes-engine').projectDir = new File(rootDir, '../react-native-lab/react-native/ReactAndroid/hermes-engine') +include ':packages:react-native:ReactAndroid' +project(':packages:react-native:ReactAndroid').projectDir = new File(rootDir, '../react-native-lab/react-native/packages/react-native/ReactAndroid') +include ':packages:react-native:ReactAndroid:hermes-engine' +project(':packages:react-native:ReactAndroid:hermes-engine').projectDir = new File(rootDir, '../react-native-lab/react-native/packages/react-native/ReactAndroid/hermes-engine') include ':expo-modules-test-core' project(':expo-modules-test-core').projectDir = new File(rootDir, '../packages/expo-modules-test-core/android') diff --git a/android/tools/src/main/java/host/exp/exponent/tools/ReactAndroidCodeTransformer.java b/android/tools/src/main/java/host/exp/exponent/tools/ReactAndroidCodeTransformer.java index 9165668594c231..dfb25f838f725f 100644 --- a/android/tools/src/main/java/host/exp/exponent/tools/ReactAndroidCodeTransformer.java +++ b/android/tools/src/main/java/host/exp/exponent/tools/ReactAndroidCodeTransformer.java @@ -45,7 +45,7 @@ public class ReactAndroidCodeTransformer { - private static final String REACT_ANDROID_DEST_ROOT = "react-native-lab/react-native/ReactAndroid"; + private static final String REACT_ANDROID_DEST_ROOT = "react-native-lab/react-native/packages/react-native/ReactAndroid"; private static final String SOURCE_PATH = "src/main/java/com/facebook/react/"; private static abstract class MethodVisitor { diff --git a/android/vendored/sdk47/@shopify/react-native-skia/android/build.gradle b/android/vendored/sdk47/@shopify/react-native-skia/android/build.gradle index 79b00fc8fc9dcb..2abd304d96b776 100644 --- a/android/vendored/sdk47/@shopify/react-native-skia/android/build.gradle +++ b/android/vendored/sdk47/@shopify/react-native-skia/android/build.gradle @@ -65,9 +65,9 @@ tasks.all({ task -> if (rootProject.ext.has('reactNativeAndroidRoot')) { defaultDir = rootProject.ext.get('reactNativeAndroidRoot') androidSourcesDir = defaultDir.parentFile.toString() -} else if (findProject(':ReactAndroid') != null) { +} else if (findProject(':packages:react-native:ReactAndroid') != null) { sourceBuild = false - defaultDir = project(':ReactAndroid').projectDir + defaultDir = project(':packages:react-native:ReactAndroid').projectDir androidSourcesDir = defaultDir.parentFile.toString() } else { defaultDir = file("$nodeModules/versioned-react-native/android") @@ -81,7 +81,7 @@ if (!defaultDir.exists()) { } def prebuiltDir = sourceBuild - ? Paths.get(findProject(":ReactAndroid").getProjectDir().toString(), "build", "intermediates", "library_*", "*", "jni") + ? Paths.get(findProject(":packages:react-native:ReactAndroid").getProjectDir().toString(), "build", "intermediates", "library_*", "*", "jni") : "$buildDir/reactandroid-abi*/jni" @@ -208,27 +208,6 @@ dependencies { } } -afterEvaluate { project -> - task androidSourcesJar(type: Jar) { - classifier = 'sources' - from android.sourceSets.main.java.srcDirs - include '**/*.java' - } - - android.libraryVariants.all { variant -> - def name = variant.name.capitalize() - def javaCompileTask = variant.javaCompileProvider.get() - - task "jar${name}"(type: Jar, dependsOn: javaCompileTask) { - from javaCompileTask.destinationDir - } - } - - artifacts { - archives androidSourcesJar - } -} - task extractAARHeaders { doLast { configurations.extractHeaders.files.each { @@ -275,10 +254,10 @@ tasks.whenTaskAdded { task -> if (!task.name.contains("Clean") && (task.name.contains('externalNativeBuild') || task.name.startsWith('configureCMake'))) { if (sourceBuild) { def currentBuildType = task.name.endsWith('Debug') ? 'Debug' : 'Release' - task.dependsOn(":ReactAndroid:copy${currentBuildType}JniLibsProjectOnly") + task.dependsOn(":packages:react-native:ReactAndroid:copy${currentBuildType}JniLibsProjectOnly") } } else if (task.name.startsWith('generateJsonModel') && sourceBuild) { def currentBuildType = task.name.endsWith('Debug') ? 'Debug' : 'Release' - task.dependsOn(":ReactAndroid:copy${currentBuildType}JniLibsProjectOnly") + task.dependsOn(":packages:react-native:ReactAndroid:copy${currentBuildType}JniLibsProjectOnly") } } diff --git a/android/vendored/sdk47/react-native-gesture-handler/android/build.gradle b/android/vendored/sdk47/react-native-gesture-handler/android/build.gradle index 0d3896f74e1f65..53021b9fbefa01 100644 --- a/android/vendored/sdk47/react-native-gesture-handler/android/build.gradle +++ b/android/vendored/sdk47/react-native-gesture-handler/android/build.gradle @@ -201,7 +201,7 @@ def kotlin_version = safeExtGet('kotlinVersion', project.properties['RNGH_kotlin dependencies { //noinspection GradleDynamicVersion if (isNewArchitectureEnabled()) { - implementation project(':ReactAndroid') + implementation project(':packages:react-native:ReactAndroid') } else { implementation 'host.exp:reactandroid-abi47_0_0:1.0.0' compileOnly 'com.facebook.fbjni:fbjni:+' diff --git a/android/vendored/sdk47/react-native-reanimated/android/build.gradle b/android/vendored/sdk47/react-native-reanimated/android/build.gradle index 13a50da557bfda..4cb7dd2f45908f 100644 --- a/android/vendored/sdk47/react-native-reanimated/android/build.gradle +++ b/android/vendored/sdk47/react-native-reanimated/android/build.gradle @@ -185,7 +185,7 @@ if (CLIENT_SIDE_BUILD) { def reactNativeRootDir = Paths.get(projectDir.getPath(), '../../../../versioned-react-native').toFile() def reactProperties = new Properties() -file("$reactNativeRootDir/../../react-native-lab/react-native/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) } +file("$reactNativeRootDir/../../react-native-lab/react-native/packages/react-native/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) } def BOOST_VERSION = reactProperties.getProperty("BOOST_VERSION") def DOUBLE_CONVERSION_VERSION = reactProperties.getProperty("DOUBLE_CONVERSION_VERSION") @@ -614,7 +614,7 @@ Task resolveFolly = resolveTaskFactory("resolveFolly", "folly-${FOLLY_VERSION}.t Task resolveGlog = resolveTaskFactory("resolveGlog", "glog-${GLOG_VERSION}.tar.gz", reactNativeAndroidDownloadDir, downloadsDir) if (isNewArchitectureEnabled()) { - def reactNativeAndroidProject = findProject(":ReactAndroid") + def reactNativeAndroidProject = findProject(":packages:react-native:ReactAndroid") if (reactNativeAndroidProject != null) { reactNativeAndroidProject.afterEvaluate { def resolveTasks = [resolveBoost, resolveGlog, resolveDoubleConversion, resolveFolly] @@ -624,13 +624,13 @@ if (isNewArchitectureEnabled()) { if (reactAndroidDownloadTask != null) { task.dependsOn(reactAndroidDownloadTask) } else { - logger.warn("[Reanimated] Failed to find task named `$reactAndroidDownloadTaskName` in `:ReactAndroid` project." + + logger.warn("[Reanimated] Failed to find task named `$reactAndroidDownloadTaskName` in `:packages:react-native:ReactAndroid` project." + " Explicit dependency between it and $task.name task can not be set.") } }) } } else { - throw new GradleScriptException("[Reanimated] Failed to find `:ReactAndroid` project. Explicit dependency between download tasks can not be set.") + throw new GradleScriptException("[Reanimated] Failed to find `:packages:react-native:ReactAndroid` project. Explicit dependency between download tasks can not be set.") } } @@ -1026,7 +1026,7 @@ if (CLIENT_SIDE_BUILD) { tasks.whenTaskAdded { task -> def buildType = task.name.endsWith('Debug') ? 'Debug' : 'Release' if (!task.name.contains("Clean") && (task.name.contains('externalNativeBuild') || task.name.startsWith('configureCMake') || task.name.startsWith('buildCMake') || task.name.startsWith('generateJsonModel'))) { - task.dependsOn(":ReactAndroid:copy${buildType}JniLibsProjectOnly") + task.dependsOn(":packages:react-native:ReactAndroid:copy${buildType}JniLibsProjectOnly") } } diff --git a/android/vendored/sdk47/react-native-screens/android/build.gradle b/android/vendored/sdk47/react-native-screens/android/build.gradle index 3b4677a447e17f..3df0b81a2fd3a8 100644 --- a/android/vendored/sdk47/react-native-screens/android/build.gradle +++ b/android/vendored/sdk47/react-native-screens/android/build.gradle @@ -104,7 +104,7 @@ repositories { dependencies { if (isNewArchitectureEnabled()) { - implementation project(":ReactAndroid") + implementation project(":packages:react-native:ReactAndroid") } else { implementation 'host.exp:reactandroid-abi47_0_0:1.0.0' compileOnly 'com.facebook.fbjni:fbjni:+' diff --git a/android/vendored/sdk48/@shopify/react-native-skia/android/build.gradle b/android/vendored/sdk48/@shopify/react-native-skia/android/build.gradle index d0e9533d5a6503..0bfd594097273b 100644 --- a/android/vendored/sdk48/@shopify/react-native-skia/android/build.gradle +++ b/android/vendored/sdk48/@shopify/react-native-skia/android/build.gradle @@ -51,9 +51,9 @@ def defaultDir if (rootProject.ext.has('reactNativeAndroidRoot')) { defaultDir = rootProject.ext.get('reactNativeAndroidRoot') -} else if (findProject(':ReactAndroid') != null) { +} else if (findProject(':packages:react-native:ReactAndroid') != null) { sourceBuild = false - defaultDir = project(':ReactAndroid').projectDir + defaultDir = project(':packages:react-native:ReactAndroid').projectDir } else { defaultDir = file("$nodeModules/react-native") } @@ -220,27 +220,6 @@ dependencies { } } -afterEvaluate { project -> - task androidSourcesJar(type: Jar) { - classifier = 'sources' - from android.sourceSets.main.java.srcDirs - include '**/*.java' - } - - android.libraryVariants.all { variant -> - def name = variant.name.capitalize() - def javaCompileTask = variant.javaCompileProvider.get() - - task "jar${name}"(type: Jar, dependsOn: javaCompileTask) { - from javaCompileTask.destinationDir - } - } - - artifacts { - archives androidSourcesJar - } -} - task extractAARHeaders { doLast { configurations.extractHeaders.files.each { diff --git a/android/vendored/sdk48/react-native-reanimated/android/build.gradle b/android/vendored/sdk48/react-native-reanimated/android/build.gradle index 126e396c7405ac..f80549ffe776f9 100644 --- a/android/vendored/sdk48/react-native-reanimated/android/build.gradle +++ b/android/vendored/sdk48/react-native-reanimated/android/build.gradle @@ -203,7 +203,7 @@ if (CLIENT_SIDE_BUILD) { def reactNativeRootDir = Paths.get(projectDir.getPath(), '../../../../versioned-react-native').toFile() def reactProperties = new Properties() -file("$rootDir/../react-native-lab/react-native/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) } +file("$rootDir/../react-native-lab/react-native/packages/react-native/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) } def REACT_NATIVE_VERSION = reactProperties.getProperty("VERSION_NAME") def REACT_NATIVE_MINOR_VERSION = REACT_NATIVE_VERSION.startsWith("0.0.0-") ? 1000 : REACT_NATIVE_VERSION.split("\\.")[1].toInteger() @@ -734,7 +734,7 @@ if (REACT_NATIVE_MINOR_VERSION < 71) { Task resolveGlog = resolveTaskFactory("resolveGlog", "glog-${GLOG_VERSION}.tar.gz", reactNativeAndroidDownloadDir, downloadsDir) if (isNewArchitectureEnabled()) { - def reactNativeAndroidProject = findProject(":ReactAndroid") + def reactNativeAndroidProject = findProject(":packages:react-native:ReactAndroid") if (reactNativeAndroidProject != null) { reactNativeAndroidProject.afterEvaluate { def resolveTasks = [resolveBoost, resolveGlog, resolveDoubleConversion, resolveFolly] @@ -744,13 +744,13 @@ if (REACT_NATIVE_MINOR_VERSION < 71) { if (reactAndroidDownloadTask != null) { task.dependsOn(reactAndroidDownloadTask) } else { - logger.warn("[Reanimated] Failed to find task named `$reactAndroidDownloadTaskName` in `:ReactAndroid` project." + + logger.warn("[Reanimated] Failed to find task named `$reactAndroidDownloadTaskName` in `:packages:react-native:ReactAndroid` project." + " Explicit dependency between it and $task.name task can not be set.") } }) } } else { - throw new GradleException("[Reanimated] Failed to find `:ReactAndroid` project. Explicit dependency between download tasks can not be set.") + throw new GradleException("[Reanimated] Failed to find `:packages:react-native:ReactAndroid` project. Explicit dependency between download tasks can not be set.") } } diff --git a/android/vendored/sdk48/react-native-svg/android/build.gradle b/android/vendored/sdk48/react-native-svg/android/build.gradle index 2eb18e88d93e96..25e02a15e6193f 100644 --- a/android/vendored/sdk48/react-native-svg/android/build.gradle +++ b/android/vendored/sdk48/react-native-svg/android/build.gradle @@ -87,7 +87,7 @@ repositories { dependencies { if (isNewArchitectureEnabled()) { - implementation project(":ReactAndroid") + implementation project(":packages:react-native:ReactAndroid") } else { implementation 'host.exp:reactandroid-abi48_0_0:1.0.0' compileOnly 'com.facebook.fresco:fresco:+' diff --git a/android/vendored/unversioned/@shopify/react-native-skia/android/build.gradle b/android/vendored/unversioned/@shopify/react-native-skia/android/build.gradle index 1b64f07c1bc953..4d951714f6c407 100644 --- a/android/vendored/unversioned/@shopify/react-native-skia/android/build.gradle +++ b/android/vendored/unversioned/@shopify/react-native-skia/android/build.gradle @@ -43,7 +43,7 @@ static def findNodeModules(baseDir) { throw new GradleException("React-Native-Skia: Failed to find node_modules/ path!") } -def nodeModules = Paths.get(projectDir.getPath(), '../../../../../..', 'react-native-lab').toString() +def nodeModules = Paths.get(projectDir.getPath(), '../../../../../..', 'react-native-lab/react-native/packages').toString() logger.warn("react-native-skia: node_modules/ found at: ${nodeModules}") def sourceBuild = false @@ -51,9 +51,9 @@ def defaultDir if (rootProject.ext.has('reactNativeAndroidRoot')) { defaultDir = rootProject.ext.get('reactNativeAndroidRoot') -} else if (findProject(':ReactAndroid') != null) { +} else if (findProject(':packages:react-native:ReactAndroid') != null) { sourceBuild = true - defaultDir = project(':ReactAndroid').projectDir + defaultDir = project(':packages:react-native:ReactAndroid').projectDir } else { defaultDir = file("$nodeModules/react-native") } @@ -211,27 +211,6 @@ dependencies { } } -afterEvaluate { project -> - task androidSourcesJar(type: Jar) { - classifier = 'sources' - from android.sourceSets.main.java.srcDirs - include '**/*.java' - } - - android.libraryVariants.all { variant -> - def name = variant.name.capitalize() - def javaCompileTask = variant.javaCompileProvider.get() - - task "jar${name}"(type: Jar, dependsOn: javaCompileTask) { - from javaCompileTask.destinationDir - } - } - - artifacts { - archives androidSourcesJar - } -} - task extractAARHeaders { doLast { configurations.extractHeaders.files.each { diff --git a/android/vendored/unversioned/react-native-reanimated/android/build.gradle b/android/vendored/unversioned/react-native-reanimated/android/build.gradle index 6dbb085c66433f..9450c632ee29c3 100644 --- a/android/vendored/unversioned/react-native-reanimated/android/build.gradle +++ b/android/vendored/unversioned/react-native-reanimated/android/build.gradle @@ -199,7 +199,7 @@ if (CLIENT_SIDE_BUILD) { configurations.maybeCreate("default") } -def reactNativeRootDir = Paths.get(projectDir.getPath(), '../../../../../react-native-lab/react-native').toFile() +def reactNativeRootDir = Paths.get(projectDir.getPath(), '../../../../../react-native-lab/react-native/packages/react-native').toFile() def reactProperties = new Properties() file("$reactNativeRootDir/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) } @@ -736,7 +736,7 @@ if (REACT_NATIVE_MINOR_VERSION < 71) { Task resolveGlog = resolveTaskFactory("resolveGlog", "glog-${GLOG_VERSION}.tar.gz", reactNativeAndroidDownloadDir, downloadsDir) if (isNewArchitectureEnabled()) { - def reactNativeAndroidProject = findProject(":ReactAndroid") + def reactNativeAndroidProject = findProject(":packages:react-native:ReactAndroid") if (reactNativeAndroidProject != null) { reactNativeAndroidProject.afterEvaluate { def resolveTasks = [resolveBoost, resolveGlog, resolveDoubleConversion, resolveFolly] @@ -746,13 +746,13 @@ if (REACT_NATIVE_MINOR_VERSION < 71) { if (reactAndroidDownloadTask != null) { task.dependsOn(reactAndroidDownloadTask) } else { - logger.warn("[Reanimated] Failed to find task named `$reactAndroidDownloadTaskName` in `:ReactAndroid` project." + + logger.warn("[Reanimated] Failed to find task named `$reactAndroidDownloadTaskName` in `:packages:react-native:ReactAndroid` project." + " Explicit dependency between it and $task.name task can not be set.") } }) } } else { - throw new GradleException("[Reanimated] Failed to find `:ReactAndroid` project. Explicit dependency between download tasks can not be set.") + throw new GradleException("[Reanimated] Failed to find `:packages:react-native:ReactAndroid` project. Explicit dependency between download tasks can not be set.") } } diff --git a/android/vendored/unversioned/react-native-svg/android/build.gradle b/android/vendored/unversioned/react-native-svg/android/build.gradle index a4a57b5568c321..5d38f6d8e9f1b6 100644 --- a/android/vendored/unversioned/react-native-svg/android/build.gradle +++ b/android/vendored/unversioned/react-native-svg/android/build.gradle @@ -87,7 +87,7 @@ repositories { dependencies { if (isNewArchitectureEnabled()) { - implementation project(":ReactAndroid") + implementation project(":packages:react-native:ReactAndroid") } else { implementation 'com.facebook.react:react-native:+' } @@ -101,4 +101,4 @@ if (isNewArchitectureEnabled()) { libraryName = "rnsvg" codegenJavaPackageName = "com.horcrux.rnsvg" } -} \ No newline at end of file +} diff --git a/android/versioned-abis/expoview-abi47_0_0/build.gradle b/android/versioned-abis/expoview-abi47_0_0/build.gradle index d3c93bf2e3c1bc..f9a7591bed9a7b 100644 --- a/android/versioned-abis/expoview-abi47_0_0/build.gradle +++ b/android/versioned-abis/expoview-abi47_0_0/build.gradle @@ -8,12 +8,12 @@ apply from: new File(rootDir, "versioning_linking.gradle") def hasHermesEngineDeps = false def reactProperties = new Properties() -file("${project(':ReactAndroid').projectDir}/gradle.properties").withInputStream { reactProperties.load(it) } +file("${project(':packages:react-native:ReactAndroid').projectDir}/gradle.properties").withInputStream { reactProperties.load(it) } def prebuiltHermesDir = findProperty("expo.prebuiltHermesDir") ?: file("${rootDir}/prebuiltHermes") def prebuiltHermesVersion = file("${prebuiltHermesDir}/.hermesversion").exists() ? file("${prebuiltHermesDir}/.hermesversion").text : null -def currentHermesVersion = file("${project(':ReactAndroid').projectDir}/../sdks/.hermesversion").exists() ? file("${project(':ReactAndroid').projectDir}/../sdks/.hermesversion").text : null +def currentHermesVersion = file("${project(':packages:react-native:ReactAndroid').projectDir}/../sdks/.hermesversion").exists() ? file("${project(':packages:react-native:ReactAndroid').projectDir}/../sdks/.hermesversion").text : null def buildHermesSource = currentHermesVersion != prebuiltHermesVersion logger.info(":expoview - buildHermesSource[${buildHermesSource}]") diff --git a/android/versioned-abis/expoview-abi48_0_0/build.gradle b/android/versioned-abis/expoview-abi48_0_0/build.gradle index f5b01045bed37d..aadfa1422ec71f 100644 --- a/android/versioned-abis/expoview-abi48_0_0/build.gradle +++ b/android/versioned-abis/expoview-abi48_0_0/build.gradle @@ -6,12 +6,12 @@ apply plugin: 'kotlin-kapt' apply from: new File(rootDir, "versioning_linking.gradle") def reactProperties = new Properties() -file("${project(':ReactAndroid').projectDir}/gradle.properties").withInputStream { reactProperties.load(it) } +file("${project(':packages:react-native:ReactAndroid').projectDir}/gradle.properties").withInputStream { reactProperties.load(it) } def prebuiltHermesDir = findProperty("expo.prebuiltHermesDir") ?: file("${rootDir}/prebuiltHermes") def prebuiltHermesVersion = file("${prebuiltHermesDir}/.hermesversion").exists() ? file("${prebuiltHermesDir}/.hermesversion").text : null -def currentHermesVersion = file("${project(':ReactAndroid').projectDir}/../sdks/.hermesversion").exists() ? file("${project(':ReactAndroid').projectDir}/../sdks/.hermesversion").text : null +def currentHermesVersion = file("${project(':packages:react-native:ReactAndroid').projectDir}/../sdks/.hermesversion").exists() ? file("${project(':packages:react-native:ReactAndroid').projectDir}/../sdks/.hermesversion").text : null def buildHermesSource = currentHermesVersion != prebuiltHermesVersion logger.info(":expoview - buildHermesSource[${buildHermesSource}]") diff --git a/apps/bare-expo/android/app/build.gradle b/apps/bare-expo/android/app/build.gradle index ef173b4f4e5fc7..7b8c1c27e5ff31 100644 --- a/apps/bare-expo/android/app/build.gradle +++ b/apps/bare-expo/android/app/build.gradle @@ -2,8 +2,6 @@ apply plugin: "com.android.application" apply plugin: "com.facebook.react" apply plugin: "kotlin-android" -import com.android.build.OutputFile - def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() /** @@ -14,6 +12,7 @@ react { entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim()) reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc" + codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() // Use Expo CLI to bundle the JS code cliFile = new File(["node", "--print", "require.resolve('@expo/cli')"].execute(null, rootDir).text.trim()) @@ -23,8 +22,8 @@ react { // 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 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") @@ -74,14 +73,6 @@ if (System.getenv('EX_UPDATES_NATIVE_DEBUG') == "1") { } } -/** - * Set this to true to create four separate APKs instead of one, - * one for each native architecture. This is useful if you don't - * use App Bundles (https://developer.android.com/guide/app-bundle/) - * and want to have separate APKs to upload to the Play Store. - */ -def enableSeparateBuildPerCPUArchitecture = false - /** * Set this to true to Run Proguard on Release builds to minify the Java bytecode. */ @@ -100,16 +91,6 @@ def enableProguardInReleaseBuilds = false */ def jscFlavor = 'org.webkit:android-jsc:+' -/** - * Private function to get the list of Native Architectures you want to build. - * This reads the value from reactNativeArchitectures in your gradle.properties - * file and works together with the --active-arch-only flag of react-native run-android. - */ -def reactNativeArchitectures() { - def value = project.getProperties().get("reactNativeArchitectures") - return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] -} - android { ndkVersion rootProject.ext.ndkVersion @@ -139,15 +120,6 @@ android { testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' missingDimensionStrategy 'detox', 'full' } - - splits { - abi { - reset() - enable enableSeparateBuildPerCPUArchitecture - universalApk false // If true, also generate a universal APK - include (*reactNativeArchitectures()) - } - } signingConfigs { debug { storeFile file('debug.keystore') @@ -172,22 +144,6 @@ android { matchingFallbacks = ['release', 'debug'] } } - - // applicationVariants are e.g. debug, release - applicationVariants.all { variant -> - variant.outputs.each { output -> - // For each separate APK per architecture, set a unique version code as described here: - // https://developer.android.com/studio/build/configure-apk-splits.html - // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. - def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] - def abi = output.getFilter(OutputFile.ABI) - if (abi != null) { // null for the universal-debug, universal-release variants - output.versionCodeOverride = - defaultConfig.versionCode * 1000 + versionCodes.get(abi) - } - - } - } } dependencies { @@ -211,7 +167,7 @@ dependencies { // LeakCanary 2 dependency // debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7' - androidTestImplementation(project(":detox")) + androidTestImplementation('com.wix:detox:+') androidTestImplementation('androidx.test.espresso:espresso-core:3.5.1') androidTestImplementation('androidx.test:runner:1.5.2') androidTestImplementation('androidx.test:rules:1.5.0') diff --git a/apps/bare-expo/android/app/src/main/java/dev/expo/payments/MainActivity.java b/apps/bare-expo/android/app/src/main/java/dev/expo/payments/MainActivity.java index 1b93fc12f4f01c..615769c721928e 100644 --- a/apps/bare-expo/android/app/src/main/java/dev/expo/payments/MainActivity.java +++ b/apps/bare-expo/android/app/src/main/java/dev/expo/payments/MainActivity.java @@ -42,10 +42,7 @@ protected ReactActivityDelegate createReactActivityDelegate() { this, getMainComponentName(), // If you opted-in for the New Architecture, we enable the Fabric Renderer. - DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled - // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18). - DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled - ) { + DefaultNewArchitectureEntryPoint.getFabricEnabled()) { @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/apps/bare-expo/android/app/src/main/res/drawable/rn_edit_text_material.xml b/apps/bare-expo/android/app/src/main/res/drawable/rn_edit_text_material.xml index f35d9962026a85..73b37e4d9963e2 100644 --- a/apps/bare-expo/android/app/src/main/res/drawable/rn_edit_text_material.xml +++ b/apps/bare-expo/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -20,7 +20,7 @@ android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"> -