diff --git a/android/app/build.gradle b/android/app/build.gradle index 31495c9f..564a763a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,7 +1,6 @@ apply plugin: "com.android.application" import com.android.build.OutputFile -import org.apache.tools.ant.taskdefs.condition.Os /** * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets @@ -157,16 +156,12 @@ android { "PROJECT_BUILD_DIR=$buildDir", "REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid", "REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build" + "NODE_MODULES_DIR=$rootDir/../node_modules" cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1" cppFlags "-std=c++17" // Make sure this target name is the same you specify inside the // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable. targets "tooot_appmodules" - // Fix for windows limit on number of character in file paths and in command lines - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - arguments "NDK_OUT=${rootProject.projectDir.getParent()}\\.cxx", - "NDK_APP_SHORT_COMMANDS=true" - } } } if (!enableSeparateBuildPerCPUArchitecture) { @@ -311,8 +306,10 @@ dependencies { } if (enableHermes) { - debugImplementation files(new File(["node", "--print", "require.resolve('hermes-engine/package.json')"].execute().text.trim(), "../android/hermes-debug.aar")) - releaseImplementation files(new File(["node", "--print", "require.resolve('hermes-engine/package.json')"].execute().text.trim(), "../android/hermes-release.aar")) + //noinspection GradleDynamicVersion + implementation("com.facebook.react:hermes-engine:+") { // From node_modules + exclude group:'com.facebook.fbjni' + } } else { implementation jscFlavor } @@ -325,7 +322,11 @@ if (isNewArchitectureEnabled()) { configurations.all { resolutionStrategy.dependencySubstitution { substitute(module("com.facebook.react:react-native")) - .using(project(":ReactAndroid")).because("On New Architecture we're building React Native from source") + .using(project(":ReactAndroid")) + .because("On New Architecture we're building React Native from source") + substitute(module("com.facebook.react:hermes-engine")) + .using(project(":ReactAndroid:hermes-engine")) + .because("On New Architecture we're building Hermes from source") } } } diff --git a/android/app/src/main/java/com/xmflsct/app/tooot/MainActivity.java b/android/app/src/main/java/com/xmflsct/app/tooot/MainActivity.java index 69944bb8..ba646dfe 100644 --- a/android/app/src/main/java/com/xmflsct/app/tooot/MainActivity.java +++ b/android/app/src/main/java/com/xmflsct/app/tooot/MainActivity.java @@ -24,7 +24,8 @@ public class MainActivity extends ReactActivity { /** * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and - * you can specify the rendered you wish to use (Fabric or the older renderer). + * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer + * (Paper). */ @Override protected ReactActivityDelegate createReactActivityDelegate() { @@ -41,5 +42,12 @@ public class MainActivity extends ReactActivity { reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED); return reactRootView; } + + @Override + protected boolean isConcurrentRootEnabled() { + // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18). + // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html + return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; + } } } diff --git a/android/build.gradle b/android/build.gradle index e3bef1df..ddb4bc57 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -28,9 +28,9 @@ buildscript { } dependencies { classpath 'com.google.gms:google-services:4.3.3' - classpath("com.android.tools.build:gradle:7.0.4") + classpath("com.android.tools.build:gradle:7.1.1") classpath("com.facebook.react:react-native-gradle-plugin") - classpath("de.undercouch:gradle-download-task:4.1.2") + classpath("de.undercouch:gradle-download-task:5.0.1") // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/android/settings.gradle b/android/settings.gradle index 715df6f2..1e5efc0c 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -12,4 +12,6 @@ includeBuild('../node_modules/react-native-gradle-plugin') if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") { include(":ReactAndroid") project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid') + include(":ReactAndroid:hermes-engine") + project(":ReactAndroid:hermes-engine").projectDir = file('../node_modules/react-native/ReactAndroid/hermes-engine') } diff --git a/package.json b/package.json index 376e8632..2b705bcf 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@formatjs/intl-relativetimeformat": "^11.0.3", "@mattermost/react-native-paste-input": "^0.5.0", "@neverdull-agency/expo-unlimited-secure-store": "^1.0.10", - "@react-native-async-storage/async-storage": "^1.17.7", + "@react-native-async-storage/async-storage": "^1.17.8", "@react-native-community/blur": "^4.2.0", "@react-native-community/cameraroll": "^4.1.2", "@react-native-community/netinfo": "^9.3.0", @@ -67,14 +67,14 @@ "expo-updates": "^0.14.3", "expo-video-thumbnails": "^6.4.0", "expo-web-browser": "^11.0.0", - "i18next": "^21.8.16", + "i18next": "^21.9.0", "li": "^1.3.0", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", "react-i18next": "^11.18.3", "react-intl": "^6.0.5", - "react-native": "^0.69.3", + "react-native": "^0.69.4", "react-native-animated-spinkit": "^1.5.2", "react-native-base64": "^0.2.1", "react-native-blurhash": "^1.1.10", @@ -84,7 +84,7 @@ "react-native-flash-message": "^0.3.1", "react-native-gesture-handler": "^2.5.0", "react-native-htmlview": "^0.16.0", - "react-native-image-picker": "^4.8.4", + "react-native-image-picker": "^4.8.5", "react-native-language-detection": "^0.1.0", "react-native-pager-view": "^5.4.25", "react-native-reanimated": "^2.9.1", @@ -109,7 +109,7 @@ "@babel/preset-typescript": "^7.18.6", "@expo/config": "^7.0.0", "@types/lodash": "^4.14.182", - "@types/react": "^18.0.15", + "@types/react": "^18.0.17", "@types/react-dom": "^18.0.6", "@types/react-native": "^0.69.5", "@types/react-native-base64": "^0.2.0", diff --git a/yarn.lock b/yarn.lock index 1fb1bdd1..98064f50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1703,10 +1703,10 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@react-native-async-storage/async-storage@^1.17.7": - version "1.17.7" - resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.17.7.tgz#f9213e8cc6202a8c29df5a4da1db588f3b0fa8a9" - integrity sha512-mDtWhCcpxzrZhA95f6zi0pnBsjBEZW1LKZWfxVXG0UfaWpPxDBCKowNk2xjRTytckZeVhjmPJPtBU+8QNQcR0A== +"@react-native-async-storage/async-storage@^1.17.8": + version "1.17.8" + resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.17.8.tgz#1ccff16dd02a85117b569f36eabaa2e49be40bbd" + integrity sha512-GoM/11oiSQrTcb6OycIPc6yv9HdWO12WbjsZX82v0xkAwefxJ0nPEHPhaeJiUnoOlCxj44+KoEPzlHG0Y8eRhA== dependencies: merge-options "^3.0.4" @@ -1781,7 +1781,7 @@ hermes-profile-transformer "^0.0.6" ip "^1.1.5" -"@react-native-community/cli-platform-android@^8.0.2", "@react-native-community/cli-platform-android@^8.0.5": +"@react-native-community/cli-platform-android@^8.0.4", "@react-native-community/cli-platform-android@^8.0.5": version "8.0.5" resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-8.0.5.tgz#da11d2678adeca98e83494d68de80e50571b4af4" integrity sha512-z1YNE4T1lG5o9acoQR1GBvf7mq6Tzayqo/za5sHVSOJAC9SZOuVN/gg/nkBa9a8n5U7qOMFXfwhTMNqA474gXA== @@ -1796,7 +1796,7 @@ logkitty "^0.7.1" slash "^3.0.0" -"@react-native-community/cli-platform-ios@^8.0.2", "@react-native-community/cli-platform-ios@^8.0.4": +"@react-native-community/cli-platform-ios@^8.0.4": version "8.0.4" resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.4.tgz#15225c09a1218a046f11165a54bf14b59dad7020" integrity sha512-7Jdptedfg/J0Xo2rQbJ4jmo+PMYOiIiRcNDCSI5dBcNkQfSq4MMYUnKQx5DdZHgrfxE0O1vE4iNmJdd4wePz8w== @@ -1864,7 +1864,7 @@ dependencies: joi "^17.2.1" -"@react-native-community/cli@^8.0.3": +"@react-native-community/cli@^8.0.4": version "8.0.5" resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-8.0.5.tgz#902a13b5336508f7989fddf39e6bf85b63a66de9" integrity sha512-X0AMNK+sKDJQX8eQRkqgddJsZPWlHgLryX7O9usj78UFEK8VqVYtpv08piWecfAhC2mZU4/Lww4bKu9uJ1rdyQ== @@ -2330,7 +2330,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@16 || 17 || 18", "@types/react@^18.0.15": +"@types/react@*", "@types/react@16 || 17 || 18": version "18.0.15" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.15.tgz#d355644c26832dc27f3e6cbf0c4f4603fc4ab7fe" integrity sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow== @@ -2339,6 +2339,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^18.0.17": + version "18.0.17" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.17.tgz#4583d9c322d67efe4b39a935d223edcc7050ccf4" + integrity sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/scheduler@*": version "0.16.2" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" @@ -4793,10 +4802,10 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -i18next@^21.8.16: - version "21.8.16" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-21.8.16.tgz#31fe4682e4e2077dbf229a88e5a58b7020e4ddc8" - integrity sha512-acJLCk38YMfEPjBR/1vS13SFY7rBQLs9E5m1tSRnWc9UW3f+SZszgH+NP1fZRA1+O+CdG2eLGGmuUMJW52EwzQ== +i18next@^21.9.0: + version "21.9.0" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-21.9.0.tgz#b63ebb0d4e1b23709951ca4774dc19d2ffac9553" + integrity sha512-B+6/yd7rCpJidyPuBaEApUECx7G8Ai6+tqYhrChsY4MmQqJhG7qJ4eT6Lm1OnRhieVelEtfxh4aAQktdNVZtDA== dependencies: "@babel/runtime" "^7.17.2" @@ -7056,10 +7065,10 @@ react-native-htmlview@^0.16.0: entities "^1.1.1" htmlparser2-without-node-native "^3.9.2" -react-native-image-picker@^4.8.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/react-native-image-picker/-/react-native-image-picker-4.8.4.tgz#ac52f1e265458e944664adf1dcd0a9ee408fe083" - integrity sha512-Mjh2j/sddyolb16EpmprWzbtyeFvW8Xgzr/8WNi9d6bR2FC/kL78cY/a+7Yzujg5ZDtT1MWys+eWw/qtfwgGiw== +react-native-image-picker@^4.8.5: + version "4.8.5" + resolved "https://registry.yarnpkg.com/react-native-image-picker/-/react-native-image-picker-4.8.5.tgz#5e5a0af56a13957cadfa1f8ce349d036d62e1499" + integrity sha512-+pQxkjO8cKv4RKTHOFS0fSHQ11HkWgb+imUPSOS8mwoChkR33aSuzV/6P4t9JCJgsus4qLAlB6BUosdIxw7GTA== react-native-iphone-x-helper@^1.3.1: version "1.3.1" @@ -7126,15 +7135,15 @@ react-native-tab-view@^3.1.1: resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-3.1.1.tgz#1f8d7a835ab4f5b1b1407ec8dddc1053b53fa3c6" integrity sha512-M5pRN6utQfytKWoKlKVzg5NbkYu308qNoW1khGTtEOTs1k14p2dHJ/BWOJoJYHKbPVUyZldbG9MFT7gUl4YHnw== -react-native@^0.69.3: - version "0.69.3" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.69.3.tgz#8fc7afe0a302294262a6b49ba2089483db734c05" - integrity sha512-SyGkcoEUa/BkO+wKVnv4OsnLSNfUM5zLNXS3iT/3eXjKX91/FKBH/nfR9BE1c60X5LQe/P5QYqr6WPX3TRSQkA== +react-native@^0.69.4: + version "0.69.4" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.69.4.tgz#d66f2a117442a9398b065876afdc568b209dc4da" + integrity sha512-rqNMialM/T4pHRKWqTIpOxA65B/9kUjtnepxwJqvsdCeMP9Q2YdSx4VASFR9RoEFYcPRU41yGf6EKrChNfns3g== dependencies: "@jest/create-cache-key-function" "^27.0.1" - "@react-native-community/cli" "^8.0.3" - "@react-native-community/cli-platform-android" "^8.0.2" - "@react-native-community/cli-platform-ios" "^8.0.2" + "@react-native-community/cli" "^8.0.4" + "@react-native-community/cli-platform-android" "^8.0.4" + "@react-native-community/cli-platform-ios" "^8.0.4" "@react-native/assets" "1.0.0" "@react-native/normalize-color" "2.0.0" "@react-native/polyfills" "2.0.0"