facebook / react-native

A framework for building native applications using React
https://reactnative.dev
MIT License
119.14k stars 24.32k forks source link

SoLoader: couldn't find DSO to load: libjscexecutor.so was update to 0.71.3 #36320

Closed Timson020 closed 1 year ago

Timson020 commented 1 year ago

Description

React Native Version

0.71.3

Output of npx react-native info

System:
    OS: macOS 13.2.1
    CPU: (12) x64 Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz
    Memory: 26.20 GB / 64.00 GB
    Shell: 5.8.1 - /bin/zsh
  Binaries:
    Node: 18.12.0 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 9.4.2 - /usr/local/bin/npm
    Watchman: 2023.02.13.00 - /usr/local/bin/watchman
  Managers:
    CocoaPods: 1.11.3 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: DriverKit 22.2, iOS 16.2, macOS 13.1, tvOS 16.1, watchOS 9.1
    Android SDK: Not Found
  IDEs:
    Android Studio: 2022.1 AI-221.6008.13.2211.9477386
    Xcode: 14.2/14C18 - /usr/bin/xcodebuild
  Languages:
    Java: 11.0.17 - /usr/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: 18.2.0 => 18.2.0
    react-native: 0.71.3 => 0.71.3
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

Steps to reproduce

Snack, code example, screenshot, or link to a repository

2023-02-28 12:07:20.726 29354-29354 SoLoader                pid-29354                            E  couldn't find DSO to load: libjscexecutor.so
                                                                                                        SoSource 0: com.facebook.soloader.ApkSoSource[root = /data/data/com.cioneshareapp/lib-main flags = 1]
                                                                                                        SoSource 1: com.facebook.soloader.DirectorySoSource[root = /data/app/~~MLiPAbk0jPCS5klkTZhb1A==/com.cioneshareapp-DAwy-58T_3otfYx9HS5Jjg==/lib/arm64 flags = 0]
                                                                                                        SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
                                                                                                        SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
                                                                                                        Native lib dir: /data/app/~~MLiPAbk0jPCS5klkTZhb1A==/com.cioneshareapp-DAwy-58T_3otfYx9HS5Jjg==/lib/arm64
                                                                                                     result: 0
2023-02-28 12:07:20.755  3060-3293  ActivityManagerWrapper  com.miui.home                        E  getRecentTasks: taskId=242   userId=0   baseIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.cioneshareapp/.MainActivity }
2023-02-28 12:07:20.767 29354-29381 AndroidRuntime          pid-29354                            E  FATAL EXCEPTION: create_react_context
                                                                                                    Process: com.cioneshareapp, PID: 29354
                                                                                                    java.lang.NoSuchMethodError: No static method createEgl14([I)Lorg/webrtc/EglBase14; in class Lorg/webrtc/EglBase; or its super classes (declaration of 'org.webrtc.EglBase' appears in /data/app/~~MLiPAbk0jPCS5klkTZhb1A==/com.cioneshareapp-DAwy-58T_3otfYx9HS5Jjg==/base.apk!classes2.dex)
                                                                                                        at com.oney.WebRTCModule.EglUtils.getRootEglBase(EglUtils.java:35)
                                                                                                        at com.oney.WebRTCModule.EglUtils.getRootEglBaseContext(EglUtils.java:62)
                                                                                                        at com.oney.WebRTCModule.WebRTCModule.<init>(WebRTCModule.java:115)
                                                                                                        at com.oney.WebRTCModule.WebRTCModule.<init>(WebRTCModule.java:81)
                                                                                                        at com.oney.WebRTCModule.WebRTCModulePackage.createNativeModules(WebRTCModulePackage.java:14)
                                                                                                        at com.facebook.react.ReactPackageHelper.getNativeModuleIterator(ReactPackageHelper.java:42)
                                                                                                        at com.facebook.react.NativeModuleRegistryBuilder.processPackage(NativeModuleRegistryBuilder.java:42)
                                                                                                        at com.facebook.react.ReactInstanceManager.processPackage(ReactInstanceManager.java:1456)
                                                                                                        at com.facebook.react.ReactInstanceManager.processPackages(ReactInstanceManager.java:1427)
                                                                                                        at com.facebook.react.ReactInstanceManager.createReactContext(ReactInstanceManager.java:1338)
                                                                                                        at com.facebook.react.ReactInstanceManager.access$1200(ReactInstanceManager.java:135)
                                                                                                        at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1109)
                                                                                                        at java.lang.Thread.run(Thread.java:923)
Timson020 commented 1 year ago

android.useAndroidX=true

android.enableJetifier=true

FLIPPER_VERSION=0.125.0

reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64

newArchEnabled=false

hermesEnabled=true

Limoer96 commented 1 year ago

same

cortinico commented 1 year ago

Could you share also your android/app/build.gradle file?

Limoer96 commented 1 year ago
apply plugin: "com.android.application"
apply plugin: "com.facebook.react"
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"

import com.android.build.OutputFile

apply from: "../../node_modules/react-native/react.gradle"

react {}

/**
 * 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.
 */
def enableSeparateBuildPerCPUArchitecture = false

/**
 * Run Proguard to shrink the Java bytecode in release builds.
 */
def enableProguardInReleaseBuilds = false

/**
 * The preferred build flavor of JavaScriptCore.
 *
 * For example, to use the international variant, you can use:
 * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
 *
 * The international variant includes ICU i18n library and necessary data
 * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
 * give correct results when using with locales other than en-US.  Note that
 * this variant is about 6MiB larger per architecture than default.
 */
def jscFlavor = 'org.webkit:android-jsc:+'

/**
 * Architectures to build native code for.
 */
def reactNativeArchitectures() {
    def value = project.getProperties().get("reactNativeArchitectures")
    return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
}

// 读取 package.json 中的信息
def getPackage() {
    def inputFile = new File("../package.json")
    def slurper = new groovy.json.JsonSlurper()
    def packageJson = slurper.parseText(inputFile.text)
    return packageJson
}

def packageJSON = getPackage()
def appName = packageJSON["name"]

android {
    ndkVersion rootProject.ext.ndkVersion

    compileSdkVersion rootProject.ext.compileSdkVersion
    namespace "com.peach"
    defaultConfig {
        applicationId "com.peach"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        vectorDrawables.useSupportLibrary = true
        versionCode 52
        versionName "1.21.0"
        resValue "string", "build_config_package", "com.peach"
        missingDimensionStrategy 'react-native-camera', 'general'
    }
    packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include (*reactNativeArchitectures())
        }
    }
    signingConfigs {
        debug {
            storeFile file('debug.keystore')
            storePassword 'android'
            keyAlias 'androiddebugkey'
            keyPassword 'android'
        }
        release {
            if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
                storeFile file(MYAPP_UPLOAD_STORE_FILE)
                storePassword MYAPP_UPLOAD_STORE_PASSWORD
                keyAlias MYAPP_UPLOAD_KEY_ALIAS
                keyPassword MYAPP_UPLOAD_KEY_PASSWORD
            }
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            // Caution! In production, you need to generate your own keystore file.
            // see https://reactnative.dev/docs/signed-apk-android.
            signingConfig signingConfigs.debug
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            applicationVariants.all { variant ->
                variant.outputs.all {
                    def outputFileSuffix = variant.flavorName == 'production' ? '' : ".${variant.flavorName}"
                    if (variant.buildType.name == 'release') {
                        outputFileName = "${appName}${outputFileSuffix}-v${defaultConfig.versionName}.apk" 
                    }
                }
            }
        }
    }

    flavorDimensions "default"

    productFlavors {
        dev {
            applicationIdSuffix ".dev"
            resValue "string", "app_name", "DEV.全果链批发"
        }
        demo {
            applicationIdSuffix ".demo"
            resValue "string", "app_name", "DEMO.全果链批发"
        }
        qa {
            applicationIdSuffix ".test"
            resValue "string", "app_name", "TEST.全果链批发"
        }
        production {
            dimension "default"
            resValue "string", "app_name", "全果链批发"
        }
    }

    // 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 {
    //noinspection GradleDynamicVersion
    implementation("com.facebook.react:react-android")  // From node_modules

    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0")
    implementation("androidx.core:core-splashscreen:1.0.0") // react-native-bootsplash

    debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
    debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.squareup.okhttp3', module:'okhttp'
    }

    debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")

    if (hermesEnabled.toBoolean()) {
        //noinspection GradleDynamicVersion
        implementation("com.facebook.react:hermes-android")
    } else {
        implementation jscFlavor
    }
}

apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
Timson020 commented 1 year ago

i change android/build.gradle minSdkVersion=21 to minSdkVersion=24

app not crashing

but in the android studio logcat still see error couldn't find DSO to load: libjscexecutor.so

i think app crash on start, because add react-native-webrtc package in project

@Limoer96 I hope it can help you

Timson020 commented 1 year ago

import com.android.build.OutputFile

react { }

def enableSeparateBuildPerCPUArchitecture = false

def enableProguardInReleaseBuilds = false

def jscFlavor = 'org.webkit:android-jsc:+'

def reactNativeArchitectures() { def value = project.getProperties().get("reactNativeArchitectures") return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] }

android { ndkVersion rootProject.ext.ndkVersion

compileSdkVersion rootProject.ext.compileSdkVersion

namespace "com.cioneshareapp"
defaultConfig {
    applicationId "com.cioneshareapp"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 1
    versionName "1.0"
}
splits {
    abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include (*reactNativeArchitectures())
    }
}
signingConfigs {
    debug {
        storeFile file('debug.keystore')
        storePassword 'android'
        keyAlias 'androiddebugkey'
        keyPassword 'android'
    }

            release {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
}
buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        signingConfig signingConfigs.release
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }
}

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_11
    }

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        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 {

implementation("com.facebook.react:react-android")

implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0")

debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
    exclude group:'com.squareup.okhttp3', module:'okhttp'
}

debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")
if (hermesEnabled.toBoolean()) {
    implementation("com.facebook.react:hermes-android")
} else {
    implementation jscFlavor
}

}

apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)

cortinico commented 1 year ago

apply from: "../../node_modules/react-native/react.gradle"

The issue you're facing is because you're still importing react.gradle which is now deprecated.

Please remove that line and report if the issue is still happening or not.

Limoer96 commented 1 year ago

apply from: "../../node_modules/react-native/react.gradle"

The issue you're facing is because you're still importing react.gradle which is now deprecated.

Please remove that line and report if the issue is still happening or not.

That's right, thanks for your help!

wangchongwei commented 1 year ago

@cortinico I get the same error. and don't import react.gradle in build.gradle

react-native version:0.71.4

app/build.gradle

apply plugin: "com.android.application"
apply plugin: "com.facebook.react"
apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'kotlin-android-extensions'

import com.android.build.OutputFile

/**
 * This is the configuration block to customize your React Native Android app.
 * By default you don't need to apply any configuration, just uncomment the lines you need.
 */
react {
    /* Folders */
    //   The root of your project, i.e. where "package.json" lives. Default is '..'
    // root = file("../")
    //   The folder where the react-native NPM package is. Default is ../node_modules/react-native
    // reactNativeDir = file("../node_modules/react-native")
    //   The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen
    // codegenDir = file("../node_modules/react-native-codegen")
    //   The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
    // cliFile = file("../node_modules/react-native/cli.js")
    /* Variants */
    //   The list of variants to that are debuggable. For those we're going to
    //   skip the bundling of the JS bundle and the assets. By default is just 'debug'.
    //   If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
    // debuggableVariants = ["liteDebug", "prodDebug"]
    /* Bundling */
    //   A list containing the node command and its flags. Default is just 'node'.
    // nodeExecutableAndArgs = ["node"]
    //
    //   The command to run when bundling. By default is 'bundle'
    // bundleCommand = "ram-bundle"
    //
    //   The path to the CLI configuration file. Default is empty.
    // bundleConfig = file(../rn-cli.config.js)
    //
    //   The name of the generated asset file containing your JS bundle
    // bundleAssetName = "MyApplication.android.bundle"
    //
    //   The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
    // entryFile = file("../js/MyApplication.android.js")
    //
    //   A list of extra flags to pass to the 'bundle' commands.
    //   See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
    // extraPackagerArgs = []
    /* Hermes Commands */
    //   The hermes compiler command to run. By default it is 'hermesc'
    // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
    //
    //   The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
    // hermesFlags = ["-O", "-output-source-map"]
}
/**
 * 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.
 */
def enableProguardInReleaseBuilds = false

/**
 * The preferred build flavor of JavaScriptCore (JSC)
 *
 * For example, to use the international variant, you can use:
 * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
 *
 * The international variant includes ICU i18n library and necessary data
 * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
 * give correct results when using with locales other than en-US. Note that
 * this variant is about 6MiB larger per architecture than default.
 */
def jscFlavor = 'org.webkit:android-jsc:+'

/**
 * 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"]
}

ext {
    defaultIsJenkins = "false"
    isJenkins = project.hasProperty('IS_JENKINS') ? IS_JENKINS : defaultIsJenkins
}
def loadSigningConfig() {
    if ("true".equals(isJenkins)) {
        // Create a variable called keystorePropertiesFile, and initialize it to your
        // keystore.properties file, in the rootProject folder.
        def keystorePropertiesFile = rootProject.file("/Users/jenkins/.jenkins/scripts/signingConfigs.properties")
        // Initialize a new Properties() object called keystoreProperties.
        def keystoreProperties = new Properties()
        // Load your keystore.properties file into the keystoreProperties object.
        keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
        android.signingConfigs.config.keyAlias = keystoreProperties['keyAlias']
        android.signingConfigs.config.keyPassword = keystoreProperties['keyPassword']
        android.signingConfigs.config.storeFile = file(keystoreProperties['storeFile'])
        android.signingConfigs.config.storePassword = keystoreProperties['storePassword']
    } else {
        def keystorePropertiesFile = rootProject.file("./keystores/localSign.properties")
        // Initialize a new Properties() object called keystoreProperties.
        def keystoreProperties = new Properties()
        // Load your keystore.properties file into the keystoreProperties object.
        keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
        android.signingConfigs.debug.keyAlias = keystoreProperties['keyAlias']
        android.signingConfigs.debug.keyPassword = keystoreProperties['keyPassword']
        android.signingConfigs.debug.storeFile = rootProject.file("./keystores/xWallet.jks")
        android.signingConfigs.debug.storePassword = keystoreProperties['storePassword']
    }
}

android {
    ndkVersion rootProject.ext.ndkVersion

    compileSdkVersion rootProject.ext.compileSdkVersion

    namespace "com.saasapp"
    defaultConfig {
        applicationId "com.saasapp"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 333
        versionName "7.3"
        missingDimensionStrategy 'react-native-camera', 'general'
    }

    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include (*reactNativeArchitectures())
        }
    }
    signingConfigs {
        debug {
        }
        config {

        }
    }

    loadSigningConfig()

    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            // Caution! In production, you need to generate your own keystore file.
            // see https://reactnative.dev/docs/signed-apk-android.
            signingConfig signingConfigs.debug
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            if ("true".equals(isJenkins)) {
                signingConfig signingConfigs.config
            }
        }
    }

    // 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)
            }

        }
    }

    buildFeatures {
        viewBinding true
    }

    packagingOptions {
        pickFirst 'lib/x86/libc++_shared.so'
        pickFirst 'lib/x86_64/libjsc.so'
        pickFirst 'lib/arm64-v8a/libjsc.so'
        pickFirst 'lib/arm64-v8a/libc++_shared.so'
        pickFirst 'lib/x86_64/libc++_shared.so'
        pickFirst 'lib/armeabi-v7a/libc++_shared.so'
    }
}

configurations.all {
    resolutionStrategy {
        force 'androidx.core:core-ktx:1.6.0'
    }
}

dependencies {
// The version of react-native is set by the React Native Gradle Plugin
    implementation("com.facebook.react:react-android")

    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0")

    debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
    debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.squareup.okhttp3', module:'okhttp'
    }

    debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")
    if (hermesEnabled.toBoolean()) {
        implementation("com.facebook.react:hermes-android")
    } else {
        implementation jscFlavor
    }

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'

    implementation project(':ocridcardlibrary')
    implementation project(':faceplatform')
    implementation project(':faceplatform-ui')
    implementation project(':fingermanager')
    implementation project(':apiwrapper')
    // 
    implementation project(':react-native-fused-location')

    implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1'

    implementation 'com.github.bumptech.glide:glide:4.11.0'
    kapt 'com.github.bumptech.glide:compiler:4.11.0'

    def retrofit2_version = "2.9.0"
    implementation "com.squareup.retrofit2:retrofit: $retrofit2_version"
    implementation "com.squareup.retrofit2:converter-gson:$retrofit2_version"

    implementation 'com.facebook.fresco:animated-gif:2.0.0'

    implementation 'com.facebook.android:facebook-android-sdk:9.0.0'

    def coroutinesVersion = "1.2.2"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion"
}

apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
Timson020 commented 1 year ago

app crash on open app ? @wangchongwei

wangchongwei commented 1 year ago

@Timson020 no, crash when do something. open app is normal

denissb commented 1 year ago

I have the same problem when disabling Hermes in my project. With Hermes enabled the app starts fine, and I am not using apply from: "../../node_modules/react-native/react.gradle". This is happening when trying to upgrade to React Native 0.71.

devjta commented 1 year ago

@denissb you need to include the JSC-DIST form the node modules folder..

Somewhere you need to add this (if you use gradle KTS): maven("$rootDir/../node_modules/jsc-android/dist")

Looks little bit different in Gradle Groovy.

DejavuDaniel commented 1 year ago

apply plugin: "com.android.application" apply plugin: "com.facebook.react"

def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()

/**

/**

/**

android { ndkVersion rootProject.ext.ndkVersion

compileSdkVersion rootProject.ext.compileSdkVersion

namespace 'com.dkalinin.petdex'
defaultConfig {
    applicationId 'com.dkalinin.petdex'
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 1
    versionName "1.0.0"
    manifestPlaceholders = [appAuthRedirectScheme: 'petdex']

    buildConfigField("boolean", "REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS", (findProperty("reactNative.unstable_useRuntimeSchedulerAlways") ?: true).toString())
}
signingConfigs {
    debug {
        storeFile file('debug.keystore')
        storePassword 'android'
        keyAlias 'androiddebugkey'
        keyPassword 'android'
    }
}
buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        // Caution! In production, you need to generate your own keystore file.
        // see https://reactnative.dev/docs/signed-apk-android.
        signingConfig signingConfigs.debug
        shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false)
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }
}

}

// Apply static values from gradle.properties to the android.packagingOptions // Accepts values in comma delimited lists, example: // android.packagingOptions.pickFirsts=/LICENSE,**/picasa.ini ["pickFirsts", "excludes", "merges", "doNotStrip"].each { prop -> // Split option: 'foo,bar' -> ['foo', 'bar'] def options = (findProperty("android.packagingOptions.$prop") ?: "").split(","); // Trim all elements in place. for (i in 0..<options.size()) options[i] = options[i].trim(); // [] - "" is essentially [""].filter(Boolean) removing all empty strings. options -= ""

if (options.length > 0) {
    println "android.packagingOptions.$prop += $options ($options.length)"
    // Ex: android.packagingOptions.pickFirsts += '**/SCCS/**'
    options.each {
        android.packagingOptions[prop] += it
    }
}

}

dependencies { // 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";
def frescoVersion = rootProject.ext.frescoVersion

// If your app supports Android versions before Ice Cream Sandwich (API level 14)
if (isGifEnabled || isWebpEnabled) {
    implementation("com.facebook.fresco:fresco:${frescoVersion}")
    implementation("com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}")
}

if (isGifEnabled) {
    // For animated gif support
    implementation("com.facebook.fresco:animated-gif:${frescoVersion}")
}

if (isWebpEnabled) {
    // For webp support
    implementation("com.facebook.fresco:webpsupport:${frescoVersion}")
    if (isWebpAnimatedEnabled) {
        // Animated webp support
        implementation("com.facebook.fresco:animated-webp:${frescoVersion}")
    }
}

debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
    exclude group:'com.squareup.okhttp3', module:'okhttp'
}
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")

if (hermesEnabled.toBoolean()) {
    implementation("com.facebook.react:hermes-android")
} else {
    implementation jscFlavor
}

}

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)

DejavuDaniel commented 1 year ago

i keep getting errors couldn't find DSO to load: libjscexecutor.so

PElfimov commented 1 year ago

apply from: "../../node_modules/react-native/react.gradle"

The issue you're facing is because you're still importing react.gradle which is now deprecated.

Please remove that line and report if the issue is still happening or not.

Thanks, it`s work for me. RN 0.70.13