Page MenuHomePhorge

D14964.1765059134.diff
No OneTemporary

Size
52 KB
Referenced Files
None
Subscribers
None

D14964.1765059134.diff

diff --git a/native/android/app/build.gradle b/native/android/app/build.gradle
--- a/native/android/app/build.gradle
+++ b/native/android/app/build.gradle
@@ -1,100 +1,70 @@
apply plugin: "com.android.application"
-import com.android.build.OutputFile
import de.undercouch.gradle.tasks.download.Download
import app.comm.gradle.tasks.GitModules
-/**
- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
- * and bundleReleaseJsAndAssets).
- * These basically call `react-native bundle` with the correct arguments during the Android build
- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
- * bundle directly from the development server. Below you can see all the possible configurations
- * and their defaults. If you decide to add a configuration block, make sure to add it before the
- * `apply from: "../../node_modules/react-native/react.gradle"` line.
- *
- * project.ext.react = [
- * // the name of the generated asset file containing your JS bundle
- * bundleAssetName: "index.android.bundle",
- *
- * // the entry file for bundle generation. If none specified and
- * // "index.android.js" exists, it will be used. Otherwise "index.js" is
- * // default. Can be overridden with ENTRY_FILE environment variable.
- * entryFile: "index.android.js",
- *
- * // https://reactnative.dev/docs/performance#enable-the-ram-format
- * bundleCommand: "ram-bundle",
- *
- * // whether to bundle JS and assets in debug mode
- * bundleInDebug: false,
- *
- * // whether to bundle JS and assets in release mode
- * bundleInRelease: true,
- *
- * // whether to bundle JS and assets in another build variant (if configured).
- * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
- * // The configuration property can be in the following formats
- * // 'bundleIn${productFlavor}${buildType}'
- * // 'bundleIn${buildType}'
- * // bundleInFreeDebug: true,
- * // bundleInPaidRelease: true,
- * // bundleInBeta: true,
- *
- * // whether to disable dev mode in custom build variants (by default only disabled in release)
- * // for example: to disable dev mode in the staging build type (if configured)
- * devDisabledInStaging: true,
- * // The configuration property can be in the following formats
- * // 'devDisabledIn${productFlavor}${buildType}'
- * // 'devDisabledIn${buildType}'
- *
- * // the root of your project, i.e. where "package.json" lives
- * root: "../../",
- *
- * // where to put the JS bundle asset in debug mode
- * jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
- *
- * // where to put the JS bundle asset in release mode
- * jsBundleDirRelease: "$buildDir/intermediates/assets/release",
- *
- * // where to put drawable resources / React Native assets, e.g. the ones you use via
- * // require('./image.png')), in debug mode
- * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
- *
- * // where to put drawable resources / React Native assets, e.g. the ones you use via
- * // require('./image.png')), in release mode
- * resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
- *
- * // by default the gradle tasks are skipped if none of the JS files or assets change; this means
- * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
- * // date; if you have any other folders that you want to ignore for performance reasons (gradle
- * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
- * // for example, you might want to remove it from here.
- * inputExcludes: ["android/**", "ios/**"],
- *
- * // override which node gets called and with what additional arguments
- * nodeExecutableAndArgs: ["node"],
- *
- * // supply additional arguments to the packager
- * extraPackagerArgs: []
- * ]
- */
+apply plugin: "org.jetbrains.kotlin.android"
+apply plugin: "com.facebook.react"
-project.ext.react = [
- enableHermes: true, // clean and rebuild if changing
- cliPath: ["node", "-e", "console.log(require('react-native/cli').bin);"].execute([], projectDir).text.trim(),
-]
-
-apply from: new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../react.gradle")
+def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()
/**
- * Set this to true to create two separate APKs instead of one:
- * - An APK that only works on ARM devices
- * - An APK that only works on x86 devices
- * The advantage is the size of the APK is reduced by about 4MB.
- * Upload all the APKs to the Play Store and people will download
- * the correct one based on the CPU architecture of their device.
+ * 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.
*/
-def enableSeparateBuildPerCPUArchitecture = false
+ 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', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()
+ enableBundleCompression = (findProperty('android.enableBundleCompression') ?: false).toBoolean()
+ // Use Expo CLI to bundle the app, this ensures the Metro config
+ // works correctly with Expo projects.
+ cliFile = new File(["node", "--print", "require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })"].execute(null, rootDir).text.trim())
+ bundleCommand = "export:embed"
+
+ /* 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")
+
+ /* 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 = ["liteDebug", "prodDebug"]
+
+ /* Bundling */
+ // A list containing the node command and its flags. Default is just 'node'.
+ // nodeExecutableAndArgs = ["node"]
+
+ //
+ // 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()
+}
/**
* Run Proguard to shrink the Java bytecode in release builds.
@@ -112,16 +82,7 @@
* 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 enable the Hermes VM.
- *
- * This should be set on project.ext.react and that value will be read here. If it is not set
- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
- * and the benefits of using Hermes will therefore be sharply reduced.
- */
-def enableHermes = project.ext.react.get("enableHermes", false)
+def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+'
/**
* Architectures to build native code for.
@@ -141,90 +102,6 @@
thirdPartyNdkDir.mkdirs()
}
-def REACT_NATIVE_DIR = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).parent
-def reactNativeThirdParty = new File("$REACT_NATIVE_DIR/ReactAndroid/src/main/jni/third-party")
-
-def reactProperties = new Properties()
-file("$REACT_NATIVE_DIR/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) }
-
-def FOLLY_VERSION = reactProperties.getProperty("FOLLY_VERSION")
-def BOOST_VERSION = reactProperties.getProperty("BOOST_VERSION")
-def DOUBLE_CONVERSION_VERSION = reactProperties.getProperty("DOUBLE_CONVERSION_VERSION")
-
-// FOLLY
-task downloadFolly(dependsOn: createNativeDepsDirectories, type: Download) {
- src("https://github.com/facebook/folly/archive/v${FOLLY_VERSION}.tar.gz")
- onlyIfNewer(true)
- overwrite(false)
- dest(new File(downloadsDir, "folly-${FOLLY_VERSION}.tar.gz"))
-}
-
-task prepareFolly(dependsOn: [downloadFolly], type: Copy) {
- from(tarTree(downloadFolly.dest))
- from("$reactNativeThirdParty/folly/Android.mk")
- include("folly-${FOLLY_VERSION}/folly/**/*", "Android.mk")
- eachFile { fname -> fname.path = (fname.path - "folly-${FOLLY_VERSION}/") }
- includeEmptyDirs = false
- into("$thirdPartyNdkDir/folly")
-}
-
-// GLOG
-task downloadGlog(dependsOn: createNativeDepsDirectories, type: Download) {
- src("https://github.com/google/glog/archive/v${GLOG_VERSION}.tar.gz")
- onlyIfNewer(true)
- overwrite(false)
- dest(new File(downloadsDir, "glog-${GLOG_VERSION}.tar.gz"))
-}
-
-task prepareGlog(dependsOn: dependenciesPath ? [] : [downloadGlog], type: Copy) {
- from(dependenciesPath ?: tarTree(downloadGlog.dest))
- include("glog-${GLOG_VERSION}/**/*")
- includeEmptyDirs = false
- into("$thirdPartyNdkDir/glog")
-}
-
-// BOOST
-
-// The Boost library is a very large download (>100MB).
-// If Boost is already present on your system, define the REACT_NATIVE_BOOST_PATH env variable
-// and the build will use that.
-def boostPath = dependenciesPath ?: System.getenv("REACT_NATIVE_BOOST_PATH")
-
-task downloadBoost(dependsOn: createNativeDepsDirectories, type: Download) {
- src("https://archives.boost.io/release/${BOOST_VERSION.replace("_", ".")}/source/boost_${BOOST_VERSION}.tar.gz")
- onlyIfNewer(true)
- overwrite(false)
- dest(new File(downloadsDir, "boost_${BOOST_VERSION}.tar.gz"))
-}
-
-task prepareBoost(dependsOn: [downloadBoost], type: Copy) {
- from(tarTree(resources.gzip(downloadBoost.dest)))
- from("$reactNativeThirdParty/boost/Android.mk")
- include("Android.mk", "boost_${BOOST_VERSION}/boost/**/*.hpp", "boost/boost/**/*.hpp")
- includeEmptyDirs = false
- into("$thirdPartyNdkDir/boost")
- doLast {
- file("$thirdPartyNdkDir/boost/boost").renameTo("$thirdPartyNdkDir/boost/boost_${BOOST_VERSION}")
- }
-}
-
-// DOUBLE-CONVERSION
-task downloadDoubleConversion(dependsOn: createNativeDepsDirectories, type: Download) {
- src("https://github.com/google/double-conversion/archive/v${DOUBLE_CONVERSION_VERSION}.tar.gz")
- onlyIfNewer(true)
- overwrite(false)
- dest(new File(downloadsDir, "double-conversion-${DOUBLE_CONVERSION_VERSION}.tar.gz"))
-}
-
-task prepareDoubleConversion(dependsOn: [downloadDoubleConversion], type: Copy) {
- from(tarTree(downloadDoubleConversion.dest))
- from("$reactNativeThirdParty/double-conversion/Android.mk")
- include("double-conversion-${DOUBLE_CONVERSION_VERSION}/src/**/*", "Android.mk")
- filesMatching("*/src/**/*", { fname -> fname.path = "double-conversion/${fname.name}" })
- includeEmptyDirs = false
- into("$thirdPartyNdkDir/double-conversion")
-}
-
// OPENSSL
def hostSystem = System.getProperty('os.name').toLowerCase(Locale.ROOT)
def hostTag = hostSystem.contains('mac') ? 'darwin-x86_64' : 'linux-x86_64'
@@ -275,92 +152,8 @@
}
}
-// JNI
-def REACT_NATIVE_AAR = "${buildDir}/react-native.aar"
-
-def extractReactNativeAAR = { buildType ->
- def suffix = buildType == 'Debug' ? '-debug' : '-release'
- def rnAARs = fileTree(REACT_NATIVE_DIR).matching { include "**/react-native/**/*${suffix}.aar" }
- if (rnAARs.isEmpty()) {
- rnAARs = fileTree(REACT_NATIVE_DIR).matching { include "**/react-native/**/*.aar" }
- }
- if (rnAARs.any() && rnAARs.size() > 1) {
- logger.error("More than one React Native AAR file has been found:")
- rnAARs.each { println(it) }
- throw new GradleException(
- "Multiple React Native AARs found:\n${rnAARs.join("\n")}" +
- "\nRemove the old ones and try again"
- )
- }
- def rnAAR = rnAARs.singleFile
- def file = rnAAR.absoluteFile
- def packageName = file.name.tokenize('-')[0]
- copy {
- from zipTree(file)
- into REACT_NATIVE_AAR
- include "jni/**/*"
- }
-}
-
-task extractReactNativeAARRelease {
- doLast {
- extractReactNativeAAR('Release')
- }
-}
-
-task extractReactNativeAARDebug {
- doLast {
- extractReactNativeAAR('Debug')
- }
-}
-
-
-task extractAARHeaders {
- doLast {
- configurations.extractHeaders.files.each {
- def file = it.absoluteFile
- copy {
- from zipTree(file)
- into "$buildDir/$file.name"
- include "**/*.h"
- }
- }
- }
-}
-
-task extractJNIFiles {
- doLast {
- configurations.extractJNI.files.each {
- def file = it.absoluteFile
- copy {
- from zipTree(file)
- into "$buildDir/$file.name"
- include "jni/**/*"
- }
- }
- }
-}
-
-tasks.whenTaskAdded { task ->
- if (
- !task.name.contains("Clean") &&
- (task.name.contains('externalNativeBuild') ||
- task.name.startsWith('configureCMake') ||
- task.name.startsWith('buildCMake'))
- ) {
- def buildType = task.name.endsWith('Debug') ? 'Debug' : 'Release'
- task.dependsOn(extractAARHeaders)
- task.dependsOn(extractJNIFiles)
- task.dependsOn("extractReactNativeAAR${buildType}")
- }
-}
-
// EXTERNAL LIBS
task prepareExternalLibs {
- dependsOn prepareFolly
- dependsOn prepareGlog
- dependsOn prepareBoost
- dependsOn prepareDoubleConversion
dependsOn prebuildOpenSSL
}
@@ -405,6 +198,12 @@
}
}
+gradle.projectsEvaluated {
+ tasks.named('createBundleReleaseJsAndAssets').configure {
+ dependsOn copyNativeRustLibraryFiles
+ }
+}
+
// Run removing CXX task before the clean execution
beforeEvaluate {
clean.dependsOn(removeCXX)
@@ -464,8 +263,6 @@
return detectedAbis
}
-def REACT_NATIVE_SO_DIR = "${REACT_NATIVE_AAR}/jni"
-
android {
buildFeatures {
prefab true
@@ -484,7 +281,10 @@
ndkVersion rootProject.ext.ndkVersion
- compileSdkVersion rootProject.ext.compileSdkVersion
+ buildToolsVersion rootProject.ext.buildToolsVersion
+ compileSdk rootProject.ext.compileSdkVersion
+
+ namespace "app.comm.android"
defaultConfig {
applicationId 'app.comm.android'
@@ -492,76 +292,9 @@
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 508
versionName '1.0.508'
- buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
- if (isNewArchitectureEnabled()) {
- // We configure the CMake build only if you decide to opt-in for the New Architecture.
- externalNativeBuild {
- cmake {
- arguments "-DPROJECT_BUILD_DIR=$buildDir",
- "-DREACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
- "-DREACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build",
- "-DNODE_MODULES_DIR=$rootDir/../node_modules",
- "-DANDROID_STL=c++_shared"
- }
- }
- if (!enableSeparateBuildPerCPUArchitecture) {
- ndk {
- abiFilters (*reactNativeArchitectures())
- }
- }
- }
- missingDimensionStrategy 'react-native-camera', 'general'
multiDexEnabled true
}
- if (isNewArchitectureEnabled()) {
- // We configure the NDK build only if you decide to opt-in for the New Architecture.
- externalNativeBuild {
- cmake {
- path "$projectDir/src/main/jni/CMakeLists.txt"
- }
- }
- def reactAndroidProjectDir = project(':ReactAndroid').projectDir
- def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) {
- dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck")
- from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
- into("$buildDir/react-ndk/exported")
- }
- def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) {
- dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck")
- from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
- into("$buildDir/react-ndk/exported")
- }
- afterEvaluate {
- // If you wish to add a custom TurboModule or component locally,
- // you should uncomment this line.
- // preBuild.dependsOn("generateCodegenArtifactsFromSchema")
- preDebugBuild.dependsOn(packageReactNdkDebugLibs)
- preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
- // Due to a bug inside AGP, we have to explicitly set a dependency
- // between configureCMakeDebug* tasks and the preBuild tasks.
- // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732
- configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild)
- configureCMakeDebug.dependsOn(preDebugBuild)
- reactNativeArchitectures().each { architecture ->
- tasks.findByName("configureCMakeDebug[${architecture}]")?.configure {
- dependsOn("preDebugBuild")
- }
- tasks.findByName("configureCMakeRelWithDebInfo[${architecture}]")?.configure {
- dependsOn("preReleaseBuild")
- }
- }
- }
- }
-
- splits {
- abi {
- reset()
- enable enableSeparateBuildPerCPUArchitecture
- universalApk false // If true, also generate a universal APK
- include (*reactNativeArchitectures())
- }
- }
signingConfigs {
debug {
storeFile file('debug.keystore')
@@ -612,11 +345,8 @@
externalNativeBuild {
cmake {
arguments "-DANDROID_STL=c++_shared",
- "-DGLOG_VERSION=" + GLOG_VERSION,
"-DOPENSSL_VERSION=" + OPENSSL_VERSION,
"-DNDK_VERSION=" + rootProject.ext.ndkVersion,
- "-DREACT_NATIVE_SO_DIR=${REACT_NATIVE_SO_DIR}",
- "-DBOOST_VERSION=${BOOST_VERSION}",
"-DCI=${System.getenv('CI')}"
targets "comm_jni_module", "turbomodulejsijni"
}
@@ -630,61 +360,41 @@
}
}
- // 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, "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)
- }
+ packagingOptions {
+ jniLibs {
+ useLegacyPackaging (findProperty('expo.useLegacyPackaging')?.toBoolean() ?: false)
}
}
-
- afterEvaluate {
- extractAARHeaders.dependsOn(prepareExternalLibs)
- extractJNIFiles.dependsOn(prepareExternalLibs)
+ androidResources {
+ ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~'
}
}
dependencies {
implementation 'com.tencent:mmkv:1.3.5'
- implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10"
- //noinspection GradleDynamicVersion
- implementation("com.facebook.react:react-native:+")
+
+ // The version of react-native is set by the React Native Gradle Plugin
+ implementation("com.facebook.react:react-android")
def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true";
def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true";
def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true";
- // If your app supports Android versions before Ice Cream Sandwich (API level 14)
- // All fresco packages should use the same version
- if (isGifEnabled || isWebpEnabled) {
- implementation 'com.facebook.fresco:fresco:2.5.0'
- implementation 'com.facebook.fresco:imagepipeline-okhttp3:2.5.0'
- }
-
if (isGifEnabled) {
// For animated gif support
- implementation 'com.facebook.fresco:animated-gif:2.5.0'
+ implementation("com.facebook.fresco:animated-gif:${expoLibs.versions.fresco.get()}")
}
if (isWebpEnabled) {
// For webp support
- implementation 'com.facebook.fresco:webpsupport:2.5.0'
+ implementation("com.facebook.fresco:webpsupport:${expoLibs.versions.fresco.get()}")
if (isWebpAnimatedEnabled) {
// Animated webp support
- implementation 'com.facebook.fresco:animated-webp:2.5.0'
+ implementation("com.facebook.fresco:animated-webp:${expoLibs.versions.fresco.get()}")
}
}
- implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
-
implementation "com.google.android.gms:play-services-base:16.1.0"
implementation "com.google.firebase:firebase-core:21.1.0"
implementation "com.google.firebase:firebase-messaging:21.1.0"
@@ -701,11 +411,8 @@
implementation 'org.conscrypt:conscrypt-android:2.0.0'
- if (enableHermes) {
- //noinspection GradleDynamicVersion
- implementation("com.facebook.react:hermes-engine:+") { // From node_modules
- exclude group:'com.facebook.fbjni'
- }
+ if (hermesEnabled.toBoolean()) {
+ implementation("com.facebook.react:hermes-android")
} else {
implementation jscFlavor
}
@@ -719,38 +426,4 @@
implementation "com.google.guava:guava:31.0.1-android"
}
-if (isNewArchitectureEnabled()) {
- // If new architecture is enabled, we let you build RN from source
- // Otherwise we fallback to a prebuilt .aar bundled in the NPM package.
- // This will be applied to all the imported transtitive dependency.
- 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")
- substitute(module("com.facebook.react:hermes-engine"))
- .using(project(":ReactAndroid:hermes-engine"))
- .because("On New Architecture we're building Hermes from source")
- }
- }
-}
-
-// Run this once to be able to run the application with BUCK
-// puts all compile dependencies into folder libs for BUCK to use
-task copyDownloadableDepsToLibs(type: Copy) {
- from configurations.implementation
- into 'libs'
-}
-
-apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle");
-applyNativeModulesAppBuildGradle(project)
-
-def isNewArchitectureEnabled() {
- // To opt-in for the New Architecture, you can either:
- // - Set `newArchEnabled` to true inside the `gradle.properties` file
- // - Invoke gradle with `-newArchEnabled=true`
- // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
- return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
-}
-
apply plugin: 'com.google.gms.google-services'
diff --git a/native/android/app/build_defs.bzl b/native/android/app/build_defs.bzl
deleted file mode 100644
--- a/native/android/app/build_defs.bzl
+++ /dev/null
@@ -1,19 +0,0 @@
-"""Helper definitions to glob .aar and .jar targets"""
-
-def create_aar_targets(aarfiles):
- for aarfile in aarfiles:
- name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
- lib_deps.append(":" + name)
- android_prebuilt_aar(
- name = name,
- aar = aarfile,
- )
-
-def create_jar_targets(jarfiles):
- for jarfile in jarfiles:
- name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
- lib_deps.append(":" + name)
- prebuilt_jar(
- name = name,
- binary_jar = jarfile,
- )
diff --git a/native/android/app/src/debug/AndroidManifest.xml b/native/android/app/src/debug/AndroidManifest.xml
--- a/native/android/app/src/debug/AndroidManifest.xml
+++ b/native/android/app/src/debug/AndroidManifest.xml
@@ -3,13 +3,11 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
>
- <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application
android:usesCleartextTraffic="true"
tools:targetApi="28"
tools:ignore="GoogleAppIndexingWarning">
- <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" />
<!-- this is configured according to
https://github.com/expo/fyi/blob/main/setup-android-uri-scheme.md
-->
diff --git a/native/android/app/src/main/AndroidManifest.xml b/native/android/app/src/main/AndroidManifest.xml
--- a/native/android/app/src/main/AndroidManifest.xml
+++ b/native/android/app/src/main/AndroidManifest.xml
@@ -1,7 +1,6 @@
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
- package="app.comm.android"
>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.INTERNET" />
@@ -36,6 +35,7 @@
android:theme="@style/AppTheme"
android:networkSecurityConfig="@xml/network_security_config"
android:requestLegacyExternalStorage="true"
+ android:supportsRtl="true"
>
<service
android:name=".notifications.CommNotificationsHandler"
diff --git a/native/android/app/src/main/java/app/comm/android/newarchitecture/MainApplicationReactNativeHost.java b/native/android/app/src/main/java/app/comm/android/newarchitecture/MainApplicationReactNativeHost.java
deleted file mode 100644
--- a/native/android/app/src/main/java/app/comm/android/newarchitecture/MainApplicationReactNativeHost.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package app.comm.android.newarchitecture;
-
-import android.app.Application;
-import androidx.annotation.NonNull;
-import app.comm.android.BuildConfig;
-import app.comm.android.newarchitecture.components.MainComponentsRegistry;
-import app.comm.android.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;
-import com.facebook.react.PackageList;
-import com.facebook.react.ReactInstanceManager;
-import com.facebook.react.ReactNativeHost;
-import com.facebook.react.ReactPackage;
-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
-import com.facebook.react.bridge.JSIModulePackage;
-import com.facebook.react.bridge.JSIModuleProvider;
-import com.facebook.react.bridge.JSIModuleSpec;
-import com.facebook.react.bridge.JSIModuleType;
-import com.facebook.react.bridge.JavaScriptContextHolder;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.bridge.UIManager;
-import com.facebook.react.fabric.ComponentFactory;
-import com.facebook.react.fabric.CoreComponentsRegistry;
-import com.facebook.react.fabric.FabricJSIModuleProvider;
-import com.facebook.react.fabric.ReactNativeConfig;
-import com.facebook.react.uimanager.ViewManagerRegistry;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A {@link ReactNativeHost} that helps you load everything needed for the New
- * Architecture, both TurboModule delegates and the Fabric Renderer.
- *
- * <p>Please note that this class is used ONLY if you opt-in for the New
- * Architecture (see the `newArchEnabled` property). Is ignored otherwise.
- */
-public class MainApplicationReactNativeHost extends ReactNativeHost {
- public MainApplicationReactNativeHost(Application application) {
- super(application);
- }
-
- @Override
- public boolean getUseDeveloperSupport() {
- return BuildConfig.DEBUG;
- }
-
- @Override
- protected List<ReactPackage> getPackages() {
- List<ReactPackage> packages = new PackageList(this).getPackages();
- // Packages that cannot be autolinked yet can be added manually here, for
- // example:
- // packages.add(new MyReactNativePackage());
- // TurboModules must also be loaded here providing a valid TurboReactPackage
- // implementation:
- // packages.add(new TurboReactPackage() { ... });
- // If you have custom Fabric Components, their ViewManagers should also be
- // loaded here inside a ReactPackage.
- return packages;
- }
-
- @Override
- protected String getJSMainModuleName() {
- return "index";
- }
-
- @NonNull
- @Override
- protected ReactPackageTurboModuleManagerDelegate.Builder
- getReactPackageTurboModuleManagerDelegateBuilder() {
- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This
- // is necessary for the new architecture and to use TurboModules correctly.
- return new MainApplicationTurboModuleManagerDelegate.Builder();
- }
-
- @Override
- protected JSIModulePackage getJSIModulePackage() {
- return new JSIModulePackage() {
- @Override
- public List<JSIModuleSpec> getJSIModules(
- final ReactApplicationContext reactApplicationContext,
- final JavaScriptContextHolder jsContext) {
- final List<JSIModuleSpec> specs = new ArrayList<>();
-
- // Here we provide a new JSIModuleSpec that will be responsible of
- // providing the custom Fabric Components.
- specs.add(new JSIModuleSpec() {
- @Override
- public JSIModuleType getJSIModuleType() {
- return JSIModuleType.UIManager;
- }
-
- @Override
- public JSIModuleProvider<UIManager> getJSIModuleProvider() {
- final ComponentFactory componentFactory = new ComponentFactory();
- CoreComponentsRegistry.register(componentFactory);
-
- // Here we register a Components Registry.
- // The one that is generated with the template contains no
- // components and just provides you the one from React Native core.
- MainComponentsRegistry.register(componentFactory);
-
- final ReactInstanceManager reactInstanceManager =
- getReactInstanceManager();
-
- ViewManagerRegistry viewManagerRegistry = new ViewManagerRegistry(
- reactInstanceManager.getOrCreateViewManagers(
- reactApplicationContext));
-
- return new FabricJSIModuleProvider(
- reactApplicationContext,
- componentFactory,
- ReactNativeConfig.DEFAULT_CONFIG,
- viewManagerRegistry);
- }
- });
- return specs;
- }
- };
- }
-}
diff --git a/native/android/app/src/main/java/app/comm/android/newarchitecture/components/MainComponentsRegistry.java b/native/android/app/src/main/java/app/comm/android/newarchitecture/components/MainComponentsRegistry.java
deleted file mode 100644
--- a/native/android/app/src/main/java/app/comm/android/newarchitecture/components/MainComponentsRegistry.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package app.comm.android.newarchitecture.components;
-
-import com.facebook.jni.HybridData;
-import com.facebook.proguard.annotations.DoNotStrip;
-import com.facebook.react.fabric.ComponentFactory;
-import com.facebook.soloader.SoLoader;
-
-/**
- * Class responsible to load the custom Fabric Components. This class has native
- * methods and needs a corresponding C++ implementation/header file to work
- * correctly (already placed inside the jni/ folder for you).
- *
- * <p>Please note that this class is used ONLY if you opt-in for the New
- * Architecture (see the `newArchEnabled` property). Is ignored otherwise.
- */
-@DoNotStrip
-public class MainComponentsRegistry {
- static {
- SoLoader.loadLibrary("fabricjni");
- }
-
- @DoNotStrip private final HybridData mHybridData;
-
- @DoNotStrip
- private native HybridData initHybrid(ComponentFactory componentFactory);
-
- @DoNotStrip
- private MainComponentsRegistry(ComponentFactory componentFactory) {
- mHybridData = initHybrid(componentFactory);
- }
-
- @DoNotStrip
- public static MainComponentsRegistry register(
- ComponentFactory componentFactory) {
- return new MainComponentsRegistry(componentFactory);
- }
-}
diff --git a/native/android/app/src/main/java/app/comm/android/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/native/android/app/src/main/java/app/comm/android/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java
deleted file mode 100644
--- a/native/android/app/src/main/java/app/comm/android/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package app.comm.android.newarchitecture.modules;
-
-import com.facebook.jni.HybridData;
-import com.facebook.react.ReactPackage;
-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.soloader.SoLoader;
-import java.util.List;
-
-/**
- * Class responsible to load the TurboModules. This class has native methods and
- * needs a corresponding C++ implementation/header file to work correctly
- * (already placed inside the jni/ folder for you).
- *
- * <p>Please note that this class is used ONLY if you opt-in for the New
- * Architecture (see the `newArchEnabled` property). Is ignored otherwise.
- */
-public class MainApplicationTurboModuleManagerDelegate
- extends ReactPackageTurboModuleManagerDelegate {
-
- private static volatile boolean sIsSoLibraryLoaded;
-
- protected MainApplicationTurboModuleManagerDelegate(
- ReactApplicationContext reactApplicationContext,
- List<ReactPackage> packages) {
- super(reactApplicationContext, packages);
- }
-
- protected native HybridData initHybrid();
-
- native boolean canCreateTurboModule(String moduleName);
-
- public static class Builder
- extends ReactPackageTurboModuleManagerDelegate.Builder {
- protected MainApplicationTurboModuleManagerDelegate
- build(ReactApplicationContext context, List<ReactPackage> packages) {
- return new MainApplicationTurboModuleManagerDelegate(context, packages);
- }
- }
-
- @Override
- protected synchronized void maybeLoadOtherSoLibraries() {
- if (!sIsSoLibraryLoaded) {
- // If you change the name of your application .so file in the Android.mk
- // file, make sure you update the name here as well.
- SoLoader.loadLibrary("comm_appmodules");
- sIsSoLibraryLoaded = true;
- }
- }
-}
diff --git a/native/android/app/src/main/jni/CMakeLists.txt b/native/android/app/src/main/jni/CMakeLists.txt
deleted file mode 100644
--- a/native/android/app/src/main/jni/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-cmake_minimum_required(VERSION 3.13)
-# Define the library name here.
-project(comm_appmodules)
-# This file includes all the necessary to
-# let you build your application with the New Architecture.
-include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)
diff --git a/native/android/app/src/main/jni/MainApplicationModuleProvider.h b/native/android/app/src/main/jni/MainApplicationModuleProvider.h
deleted file mode 100644
--- a/native/android/app/src/main/jni/MainApplicationModuleProvider.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-#include <memory>
-#include <string>
-
-#include <ReactCommon/JavaTurboModule.h>
-
-namespace facebook {
-namespace react {
-
-std::shared_ptr<TurboModule> MainApplicationModuleProvider(
- const std::string &moduleName,
- const JavaTurboModule::InitParams &params);
-
-} // namespace react
-} // namespace facebook
diff --git a/native/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/native/android/app/src/main/jni/MainApplicationModuleProvider.cpp
deleted file mode 100644
--- a/native/android/app/src/main/jni/MainApplicationModuleProvider.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "MainApplicationModuleProvider.h"
-
-#include <rncli.h>
-#include <rncore.h>
-
-namespace facebook {
-namespace react {
-
-std::shared_ptr<TurboModule> MainApplicationModuleProvider(
- const std::string &moduleName,
- const JavaTurboModule::InitParams &params) {
- // Here you can provide your own module provider for TurboModules coming from
- // either your application or from external libraries. The approach to follow
- // is similar to the following (for a library called `samplelibrary`:
- //
- // auto module = samplelibrary_ModuleProvider(moduleName, params);
- // if (module != nullptr) {
- // return module;
- // }
- // return rncore_ModuleProvider(moduleName, params);
-
- // Module providers autolinked by RN CLI
- auto rncli_module = rncli_ModuleProvider(moduleName, params);
- if (rncli_module != nullptr) {
- return rncli_module;
- }
-
- return rncore_ModuleProvider(moduleName, params);
-}
-
-} // namespace react
-} // namespace facebook
diff --git a/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h
deleted file mode 100644
--- a/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#include <memory>
-#include <string>
-
-#include <ReactCommon/TurboModuleManagerDelegate.h>
-#include <fbjni/fbjni.h>
-
-namespace facebook {
-namespace react {
-
-class MainApplicationTurboModuleManagerDelegate
- : public jni::HybridClass<
- MainApplicationTurboModuleManagerDelegate,
- TurboModuleManagerDelegate> {
- public:
- // Adapt it to the package you used for your Java class.
- static constexpr auto kJavaDescriptor =
- "Lapp/comm/android/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;";
-
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>);
-
- static void registerNatives();
-
- std::shared_ptr<TurboModule> getTurboModule(
- const std::string &name,
- const std::shared_ptr<CallInvoker> &jsInvoker) override;
- std::shared_ptr<TurboModule> getTurboModule(
- const std::string &name,
- const JavaTurboModule::InitParams &params) override;
-
- /**
- * Test-only method. Allows user to verify whether a TurboModule can be
- * created by instances of this class.
- */
- bool canCreateTurboModule(const std::string &name);
-};
-
-} // namespace react
-} // namespace facebook
diff --git a/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp
deleted file mode 100644
--- a/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "MainApplicationTurboModuleManagerDelegate.h"
-#include "MainApplicationModuleProvider.h"
-
-namespace facebook {
-namespace react {
-
-jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata>
-MainApplicationTurboModuleManagerDelegate::initHybrid(
- jni::alias_ref<jhybridobject>) {
- return makeCxxInstance();
-}
-
-void MainApplicationTurboModuleManagerDelegate::registerNatives() {
- registerHybrid({
- makeNativeMethod(
- "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid),
- makeNativeMethod(
- "canCreateTurboModule",
- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),
- });
-}
-
-std::shared_ptr<TurboModule>
-MainApplicationTurboModuleManagerDelegate::getTurboModule(
- const std::string &name,
- const std::shared_ptr<CallInvoker> &jsInvoker) {
- // Not implemented yet: provide pure-C++ NativeModules here.
- return nullptr;
-}
-
-std::shared_ptr<TurboModule>
-MainApplicationTurboModuleManagerDelegate::getTurboModule(
- const std::string &name,
- const JavaTurboModule::InitParams &params) {
- return MainApplicationModuleProvider(name, params);
-}
-
-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(
- const std::string &name) {
- return getTurboModule(name, nullptr) != nullptr ||
- getTurboModule(name, {.moduleName = name}) != nullptr;
-}
-
-} // namespace react
-} // namespace facebook
diff --git a/native/android/app/src/main/jni/MainComponentsRegistry.h b/native/android/app/src/main/jni/MainComponentsRegistry.h
deleted file mode 100644
--- a/native/android/app/src/main/jni/MainComponentsRegistry.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include <ComponentFactory.h>
-#include <fbjni/fbjni.h>
-#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
-#include <react/renderer/componentregistry/ComponentDescriptorRegistry.h>
-
-namespace facebook {
-namespace react {
-
-class MainComponentsRegistry
- : public facebook::jni::HybridClass<MainComponentsRegistry> {
- public:
- // Adapt it to the package you used for your Java class.
- constexpr static auto kJavaDescriptor =
- "Lapp/comm/android/newarchitecture/components/MainComponentsRegistry;";
-
- static void registerNatives();
-
- MainComponentsRegistry(ComponentFactory *delegate);
-
- private:
- static std::shared_ptr<ComponentDescriptorProviderRegistry const>
- sharedProviderRegistry();
-
- static jni::local_ref<jhybriddata> initHybrid(
- jni::alias_ref<jclass>,
- ComponentFactory *delegate);
-};
-
-} // namespace react
-} // namespace facebook
diff --git a/native/android/app/src/main/jni/MainComponentsRegistry.cpp b/native/android/app/src/main/jni/MainComponentsRegistry.cpp
deleted file mode 100644
--- a/native/android/app/src/main/jni/MainComponentsRegistry.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-#include "MainComponentsRegistry.h"
-
-#include <CoreComponentsRegistry.h>
-#include <fbjni/fbjni.h>
-#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
-#include <react/renderer/components/rncore/ComponentDescriptors.h>
-#include <rncli.h>
-
-namespace facebook {
-namespace react {
-
-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
-
-std::shared_ptr<ComponentDescriptorProviderRegistry const>
-MainComponentsRegistry::sharedProviderRegistry() {
- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
-
- // Autolinked providers registered by RN CLI
- rncli_registerProviders(providerRegistry);
-
- // Custom Fabric Components go here. You can register custom
- // components coming from your App or from 3rd party libraries here.
- //
- // providerRegistry->add(concreteComponentDescriptorProvider<
- // AocViewerComponentDescriptor>());
- return providerRegistry;
-}
-
-jni::local_ref<MainComponentsRegistry::jhybriddata>
-MainComponentsRegistry::initHybrid(
- jni::alias_ref<jclass>,
- ComponentFactory *delegate) {
- auto instance = makeCxxInstance(delegate);
-
- auto buildRegistryFunction =
- [](EventDispatcher::Weak const &eventDispatcher,
- ContextContainer::Shared const &contextContainer)
- -> ComponentDescriptorRegistry::Shared {
- auto registry = MainComponentsRegistry::sharedProviderRegistry()
- ->createComponentDescriptorRegistry(
- {eventDispatcher, contextContainer});
-
- auto mutableRegistry =
- std::const_pointer_cast<ComponentDescriptorRegistry>(registry);
-
- mutableRegistry->setFallbackComponentDescriptor(
- std::make_shared<UnimplementedNativeViewComponentDescriptor>(
- ComponentDescriptorParameters{
- eventDispatcher, contextContainer, nullptr}));
-
- return registry;
- };
-
- delegate->buildRegistryFunction = buildRegistryFunction;
- return instance;
-}
-
-void MainComponentsRegistry::registerNatives() {
- registerHybrid({
- makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid),
- });
-}
-
-} // namespace react
-} // namespace facebook
diff --git a/native/android/app/src/main/jni/OnLoad.cpp b/native/android/app/src/main/jni/OnLoad.cpp
deleted file mode 100644
--- a/native/android/app/src/main/jni/OnLoad.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <fbjni/fbjni.h>
-#include "MainApplicationTurboModuleManagerDelegate.h"
-#include "MainComponentsRegistry.h"
-
-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
- return facebook::jni::initialize(vm, [] {
- facebook::react::MainApplicationTurboModuleManagerDelegate::
- registerNatives();
- facebook::react::MainComponentsRegistry::registerNatives();
- });
-}
diff --git a/native/android/build.gradle b/native/android/build.gradle
--- a/native/android/build.gradle
+++ b/native/android/build.gradle
@@ -1,51 +1,40 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
- ext {
- buildToolsVersion = "34.0.0"
- minSdkVersion = 23
- compileSdkVersion = 34
- targetSdkVersion = 34
-
- // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
- ndkVersion = "23.1.7779620"
- }
- repositories {
- google()
- mavenCentral()
- }
- dependencies {
- classpath("com.android.tools.build:gradle:7.2.2")
- classpath("com.facebook.react:react-native-gradle-plugin")
- classpath("de.undercouch:gradle-download-task:5.0.1")
- classpath("com.google.gms:google-services:4.3.14")
- classpath('org.ajoberstar:grgit:1.7.2')
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath('com.android.tools.build:gradle')
+ classpath('com.facebook.react:react-native-gradle-plugin')
+ classpath("de.undercouch:gradle-download-task:5.0.1")
+ classpath("com.google.gms:google-services:4.3.14")
+ classpath('org.ajoberstar:grgit:1.7.2')
+ classpath('org.jetbrains.kotlin:kotlin-gradle-plugin')
+ }
}
+def reactNativeAndroidDir = new File(
+ providers.exec {
+ workingDir(rootDir)
+ commandLine("node", "--print", "require.resolve('react-native/package.json')")
+ }.standardOutput.asText.get().trim(),
+ "../android"
+)
+
allprojects {
- repositories {
- maven {
- // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
- url(new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../android"))
- }
- maven {
- // Android JSC is installed from npm
- url(new File(["node", "--print", "require.resolve('jsc-android/package.json')"].execute(null, rootDir).text.trim(), "../dist"))
- }
- mavenCentral {
- // We don't want to fetch react-native from Maven Central as there are
- // older versions over there.
- content {
- excludeGroup "com.facebook.react"
- }
- }
- google()
- gradlePluginPortal()
- maven { url 'https://www.jitpack.io' }
- jcenter()
+ repositories {
+ maven {
+ // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
+ url(reactNativeAndroidDir)
}
+
+ google()
+ mavenCentral()
+ maven { url 'https://www.jitpack.io' }
+ }
}
+
+apply plugin: "expo-root-project"
+apply plugin: "com.facebook.react.rootproject"
diff --git a/native/android/gradle.properties b/native/android/gradle.properties
--- a/native/android/gradle.properties
+++ b/native/android/gradle.properties
@@ -21,8 +21,6 @@
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
-# Automatically convert third-party libraries to use AndroidX
-android.enableJetifier=true
expo.jsEngine=hermes
@@ -46,6 +44,10 @@
# are providing them.
newArchEnabled=false
+# Use this property to enable or disable the Hermes JS engine.
+# If set to false, you will be using JSC instead.
+hermesEnabled=true
+
GLOG_VERSION=0.4.0
# Version of OpenSSL library to build and link
diff --git a/native/android/gradle/wrapper/gradle-wrapper.properties b/native/android/gradle/wrapper/gradle-wrapper.properties
--- a/native/android/gradle/wrapper/gradle-wrapper.properties
+++ b/native/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/native/android/settings.gradle b/native/android/settings.gradle
--- a/native/android/settings.gradle
+++ b/native/android/settings.gradle
@@ -1,23 +1,47 @@
-rootProject.name = 'Comm'
+pluginManagement {
+ def reactNativeGradlePlugin = new File(
+ providers.exec {
+ workingDir(rootDir)
+ commandLine("node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })")
+ }.standardOutput.asText.get().trim()
+ ).getParentFile().absolutePath
+ includeBuild(reactNativeGradlePlugin)
+
+ def expoPluginsPath = new File(
+ providers.exec {
+ workingDir(rootDir)
+ commandLine("node", "--print", "require.resolve('expo-modules-autolinking/package.json', { paths: [require.resolve('expo/package.json')] })")
+ }.standardOutput.asText.get().trim(),
+ "../android/expo-gradle-plugin"
+ ).absolutePath
+ includeBuild(expoPluginsPath)
+}
+
+plugins {
+ id("com.facebook.react.settings")
+ id("expo-autolinking-settings")
+}
+
+extensions.configure(com.facebook.react.ReactSettingsExtension) { ex ->
+ if (System.getenv('EXPO_USE_COMMUNITY_AUTOLINKING') == '1') {
+ ex.autolinkLibrariesFromCommand()
+ } else {
+ ex.autolinkLibrariesFromCommand(expoAutolinking.rnConfigCommand)
+ }
+}
-apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle");
-useExpoModules()
+expoAutolinking.useExpoModules()
-apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle");
-applyNativeModulesSettingsGradle(settings)
+rootProject.name = 'Comm'
+
+expoAutolinking.useExpoVersionCatalog()
include ':reactnativekeyboardinput'
project(':reactnativekeyboardinput').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keyboard-input/lib/android')
include ':app'
-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')
-}
+includeBuild(expoAutolinking.reactNativeGradlePlugin)
// We need to include '.gitmodules' for our 'GitModules' custom task
org.apache.tools.ant.DirectoryScanner.removeDefaultExclude("**/.gitmodules")

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 6, 10:12 PM (21 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5841084
Default Alt Text
D14964.1765059134.diff (52 KB)

Event Timeline