首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用自定义构建类型响应本机应用程序崩溃

使用自定义构建类型响应本机应用程序崩溃
EN

Stack Overflow用户
提问于 2022-01-26 12:43:16
回答 1查看 1.8K关注 0票数 1

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

代码语言:javascript
复制
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文件基于包含单词”reading“的构建类型执行某些任务。

当我这么做时:

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

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

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

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2022-01-26 22:57:02

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

我在任何地方都没有找到文档,但是解决方案是扩展代码,如下所示:

代码语言:javascript
复制
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库。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70863611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档