Expo预构建React Native Android应用在Android 14启动崩溃求助
Expo预构建APK在Android 14真机启动崩溃解决方案
问题背景
使用EAS Build构建的Expo预构建APK,在Android 13模拟器上运行正常,但在Android 14真机启动时会在闪屏前卡住或崩溃,iOS端无异常。
构建配置
android.compileSdkVersion=33 android.targetSdkVersion=34 android.buildToolsVersion=33.0.0 expo.jsEngine=hermes
核心依赖版本
"expo": "^48.0.0", "react": "18.2.0", "react-native": "0.71.14"
崩溃日志
07-21 14:55:13.169 20192 20192 E AndroidRuntime: FATAL EXCEPTION: main 07-21 14:55:13.169 20192 20192 E AndroidRuntime: Process: com.app.investment, PID: 20192 07-21 14:55:13.169 20192 20192 E AndroidRuntime: java.lang.AbstractMethodError: abstract method "java.lang.Object java.lang.ClassValue.computeValue(java.lang.Class)" 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at java.lang.ClassValue.getFromHashMap(ClassValue.java:230) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at java.lang.ClassValue.getFromBackup(ClassValue.java:212) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at java.lang.ClassValue.get(ClassValue.java:116) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at kotlin.reflect.jvm.internal.d.a(Unknown Source:7) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at kotlin.reflect.jvm.internal.c.c(Unknown Source:7) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at kotlin.reflect.jvm.internal.k0.b(Unknown Source:0) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at kotlin.jvm.internal.a0.b(Unknown Source:2) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at expo.modules.b$a$a.compare(Unknown Source:8) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at java.util.TimSort.countRunAndMakeAscending(TimSort.java:355) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at java.util.TimSort.sort(TimSort.java:220) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at java.util.Arrays.sort(Arrays.java:1270) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at kotlin.collections.l.n(Unknown Source:14) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at kotlin.collections.y.u0(Unknown Source:36) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at kotlin.collections.o.u0(Unknown Source:0) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at expo.modules.b$a.a(Unknown Source:30) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at expo.modules.b$a.g(Unknown Source:0) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at db.t.getValue(Unknown Source:20) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at expo.modules.b$b.a(Unknown Source:4) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at expo.modules.f.<init>(Unknown Source:17) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at expo.modules.e.<init>(Unknown Source:10) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at com.app.investment.MainApplication.<init>(Unknown Source:10) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at java.lang.Class.newInstance(Native Method) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at androidx.core.app.CoreComponentFactory.instantiateApplication(Unknown Source:0) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at android.app.Instrumentation.newApplication(Instrumentation.java:1353) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1467) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1399) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7359) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2379) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:107) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:232) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at android.os.Looper.loop(Looper.java:317) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8592) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) 07-21 14:55:13.169 20192 20192 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
解决方案
这个错误源于Kotlin版本与Android 14的API不兼容,结合你的Expo和React Native版本,执行以下步骤:
升级Kotlin版本
在项目的android/build.gradle文件中,将ext.kotlin_version修改为1.8.22(React Native 0.71.x推荐的稳定版本):buildscript { ext { kotlin_version = "1.8.22" } }同步Android构建配置
将android.buildToolsVersion升级到34.0.0,与targetSdkVersion=34保持一致,修改app.json或eas.json中的配置:android.buildToolsVersion=34.0.0清理构建缓存并重新构建
执行以下命令清理EAS缓存,避免旧构建文件干扰:eas build --clear-cache之后重新触发EAS Build构建APK。
更新Expo依赖补丁
将Expo相关依赖更新到Expo 48的最新补丁版本,确保模块适配Android 14:npm install expo@~48.0.20
内容的提问来源于stack exchange,提问作者Abdullah Zafar
相关产品推荐
相关产品推荐

