在 targetSDk 更改为 30 后,React Native android 应用程序在 Android 11 上崩溃
Posted
技术标签:
【中文标题】在 targetSDk 更改为 30 后,React Native android 应用程序在 Android 11 上崩溃【英文标题】:React Native android application crashing on Android 11 after targetSDk changed to 30 【发布时间】:2022-01-12 23:04:38 【问题描述】:我将 targetSDK 版本更改为 30 以符合 Play 商店。 该应用程序在启动时立即崩溃。在 *** 和 GitHub 上尝试了所有解决方案。 注意:应用适用于 android 9 及更低版本。
我从 logcat 获取的日志,
/SoLoader: couldn't find DSO to load: libjscexecutor.so
E/SoLoader: couldn't find DSO to load: libhermes-executor-release.so
E/GraphResponse: HttpStatus: 400, errorCode: 100, subErrorCode: 33, errorType: GraphMethodException, errorMessage: Unsupported get request. Object with ID '108xxxxxxxxx' does not exist, cannot be loaded due to missing permissions, or does not support this operation. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api
A/libc: /Users/willholen/intern/hermes/include/hermes/VM/HermesValue.h:195: static hermes::vm::HermesValue hermes::vm::HermesValue::encodeNativePointer(const void *): assertion "(reinterpret_cast<uintptr_t>(p) & ~kDataMask) == 0 && "Native pointer must contain zeroes in the high bits"" failed
A/libc: Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tid 22840 (mqt_js), pid 22732 (angle.traveller)
【问题讨论】:
project.ext.react = [ entryFile: "index.js", enableHermes: true, // clean and rebuild if changing ]
。如果我将 enableHermes 设为 false。应用程序工作正常。但是使用 true 再次崩溃。既然要爱马仕的好处,就不能假装。
【参考方案1】:
更新 okhttp3 就像下面的答案:
https://***.com/a/68744493/7668448
或者你的哨兵依赖:
https://***.com/a/70049868/7668448
基本上你需要确保依赖更新并且支持目标sdk 30。
您可以在此处查看更多详细信息:
https://github.com/facebook/react-native/issues/30366
【讨论】:
感谢您的回复。我已经尝试并测试了更新 okhttp3 和 sentry,但该应用程序仍然在没有任何崩溃日志的 Android 11 设备上崩溃。但是正如您所说,检查所有依赖项是否已更新并支持目标 30,我将尝试检查,再次感谢您的建议。?以上是关于在 targetSDk 更改为 30 后,React Native android 应用程序在 Android 11 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章
React-native 0.65 (targetSdk=30) android build 由于 react-native-reanimated 而失败
在 TestFlight Beta 的测试期结束后,构建状态更改为已过期