Han*_* Nr 5 android react-native expo
我是 React 新手,我尝试运行我的应用程序,但出现以下错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.bits.bee.bwc, PID: 12601
java.lang.AssertionError: APK bundle must contain the expected embedded asset asset_c2f3d742a18a28238b7cd34a5d4b7316.png
at expo.modules.updates.loader.EmbeddedLoader.copyAllAssets(EmbeddedLoader.java:174)
at expo.modules.updates.loader.EmbeddedLoader.processManifest(EmbeddedLoader.java:137)
at expo.modules.updates.loader.EmbeddedLoader.loadEmbeddedUpdate(EmbeddedLoader.java:57)
at expo.modules.updates.UpdatesController.start(UpdatesController.java:286)
at expo.modules.updates.UpdatesController.initialize(UpdatesController.java:96)
at com.bits.bee.bwc.MainApplication.onCreate(MainApplication.java:98)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1011)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4552)
at android.app.ActivityThread.access$1500(ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5255)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释它是如何工作的,因为我在我的资产文件夹中查找了它,没有类似的名称。我该如何解决这个问题?谢谢
此异常仅在运行调试版本时发生在我身上react-native run-android,而在运行发布版本时并未出现该异常react-native run-android --variant=release。
检查是否有以下行MainApplication.java,如果存在,则删除该行:
import com.facebook.react.BuildConfig;
Run Code Online (Sandbox Code Playgroud)
该行import com.facebook.react.BuildConfig;导致UpdatesController.initialize(this);在调试模式下调用,这是不应该发生的。
更多详情:
当你查看 Stacktrace 时,你发布了这一行
at com.bits.bee.bwc.MainApplication.onCreate(MainApplication.java:98)
Run Code Online (Sandbox Code Playgroud)
指着UpdatesController.initialize(this);。包括上面和下面的行,它看起来像这样:
if (!BuildConfig.DEBUG) {
UpdatesController.initialize(this);
}
Run Code Online (Sandbox Code Playgroud)
这里BuildConfig指向在构建期间创建的BuildConfig包的类(在您的情况下)。com.bits.bee.bwc如果导入,com.facebook.react.BuildConfig它将指向另一个BuildConfig不包含DEBUG您想要的正确值的类。
由于BuildConfig.DEBUGwill then beundefined或false,UpdatesController.initialize(this);被调用,尽管它不应该在调试构建期间被调用。因此,由于调试版本不会嵌入资产,因此copyAllAssets最终调用的函数将找不到任何资产,并且我们会收到上述错误。
com.facebook.react.BuildConfig;我在发布版本中遇到了问题java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so,并按照此处所述的建议添加了该行/sf/ask/3992542221/#answer-62119615。它没有对发布版本进行更改,我忘记了它。只是后来当我尝试进行调试构建时,我得到了这个错误..我花了很长时间才意识到这个添加的行是问题的原因!
我从调试这个问题中学到了什么:
| 归档时间: |
|
| 查看次数: |
646 次 |
| 最近记录: |