V-X*_*eme 34 android react-native
我刚刚将项目更新为使用react-native版本0.60.2。但是,当我尝试在Android设备上运行应用程序时,启动屏幕后它将崩溃。我收到以下错误日志:
E/AndroidRuntime: FATAL EXCEPTION: create_react_context
Process: com.tjspeed, PID: 3909
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:738)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:591)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:529)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:484)
at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:27)
at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:949)
at java.lang.Thread.run(Thread.java:760)
Run Code Online (Sandbox Code Playgroud)
这里的建议很少:https : //github.com/facebook/react-native/issues/25601,但不幸的是,这些建议都不对我有用。请提出解决方法。
sam*_*ady 42
我刚刚清理了 android 的构建文件夹,之后,它运行良好。希望能帮到朋友。
cd android
./gradlew clean
Run Code Online (Sandbox Code Playgroud)
Vin*_*zzz 25
从0.59.8升级到0.60.4后,我遇到了同样的问题
确保已在app / build.gradle中添加了所有这些行,尤其是依赖项部分,因为这确保您具有JSC二进制文件
project.ext.react = [
...
// your index js if not default, other settings
// Hermes JSC ?
enableHermes: false,
...
]
def jscFlavor = 'org.webkit:android-jsc:+'
def enableHermes = project.ext.react.get("enableHermes", false);
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.facebook.react:react-native:+" // From node_modules
if (enableHermes) {
// For RN 0.60.x
def hermesPath = "../../node_modules/hermesvm/android/"
// --- OR ----
// for RN 0.61+
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
Run Code Online (Sandbox Code Playgroud)
编辑
另外,确保Hermes Maven存储库位于您的根目录build.gradle中
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
Run Code Online (Sandbox Code Playgroud)
小智 11
我在project_dir / build.gradle的allProject块中添加了该块,然后崩溃消失了。
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
Run Code Online (Sandbox Code Playgroud)
我所做的是使用react-native init创建一个新项目,并通过了android build文件。幸运的是,这是我注意到并解决了我的问题的第一个区别。我想如果这不起作用,您也可以这样做。
Sta*_*ryi 11
例如:
allprojects {
repositories {
maven {
// All of React Native (JS, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
maven {
// Local Maven repo containing AARs with JSC library built for Android
url "$rootDir/../node_modules/jsc-android/dist"
}
google()
jcenter()
}
}
Run Code Online (Sandbox Code Playgroud)
android {
packagingOptions {
pickFirst '**/libjsc.so'
pickFirst '**/libc++_shared.so'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation "org.webkit:android-jsc:+"
implementation "com.facebook.react:react-native:+" // From node_modules
}
Run Code Online (Sandbox Code Playgroud)
And*_*dru 10
如果您在更新到 React Native 版本时遇到此错误0.62.2
:
将以下内容添加到您的android/app/build.gradle
文件中:
dependencies {
implementation 'com.facebook.soloader:soloader:0.9.0+'
Run Code Online (Sandbox Code Playgroud)
作为第一个implementation
条目之一。
小智 8
我已经通过添加解决了这个问题
configurations.all {
resolutionStrategy {
force "com.facebook.soloader:soloader:0.8.2"
}
}
Run Code Online (Sandbox Code Playgroud)
就我而言,我需要为每种 Android 风格添加 Hermes 路径
if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
qaImplementation files(hermesPath + "hermes-release.aar")
stageImplementation files(hermesPath + "hermes-release.aar")
prodImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6790 次 |
最近记录: |