gpt4 book ai didi

android - React Native - 应用程序因自定义构建类型而崩溃

转载 作者:行者123 更新时间:2023-12-05 09:02:47 25 4
gpt4 key购买 nike

我有一个 native react 应用程序,它在 Android 中运行良好,在 debugrelease 构建类型中。我想添加一个名为 releaseStaging 的新构建类型,所以我将其添加到 app/build.gradle:


android: {
buildTypes: {
releaseStaging {
resValue "string", "CodePushDeploymentKey", '"**something**"'
matchingFallbacks = ['release']
signingConfig signingConfigs.release
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
... debug and release defined here ...
}
}

我特意将构建类型命名为“releaseStaging”,因为通过阅读我可以看到 react.gradle 文件根据包含单词“release”的构建类型执行某些操作。

当我这样做时:

npx react-native run-android --variant=releaseStaging

它构建正常并部署到我正在测试的设备上,但它只是在启动时崩溃。

在查看 logcat 时,我可以看到错误是:

2022-01-26 12:26:00.494 4038-4102/? E/AndroidRuntime: FATAL EXCEPTION: create_react_context
Process: com.myapp, PID: 4038
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
SoSource 0: com.facebook.soloader.ApkSoSource[root = /data/data/com.mediaburst.timetastic/lib-main flags = 1]
SoSource 1: com.facebook.soloader.DirectorySoSource[root = /data/app/com.mediaburst.timetastic-jFpmTXGDULHlB6h75bUGQA==/lib/arm64 flags = 0]
SoSource 2: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
SoSource 3: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
Native lib dir: /data/app/com.mediaburst.timetastic-jFpmTXGDULHlB6h75bUGQA==/lib/arm64
result: 0
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:918)
at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:740)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:654)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:634)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:582)
at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:29)
at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1066)
at java.lang.Thread.run(Thread.java:919)

最佳答案

如果您的应用将 enableHermes 标志设置为 true,则会出现此问题

我没有在任何地方找到它的文档,但解决方案是像下面这样扩展代码:

if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseStagingImplementation files(hermesPath + "hermes-debug.aar") // Add this line
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}

我不确定它应该是 releaseStagingImplementation 还是 releasestagingImplementation,所以请尝试其中之一。

这告诉 Gradle 在 releaseStaging 构建类型中包含 Hermes 库。

关于android - React Native - 应用程序因自定义构建类型而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70863611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com