使用Expo构建的React Native APK安装后启动崩溃求助
问题:Expo + React Native + TypeScript 打包APK启动即崩溃
我用Expo结合React Native与TypeScript开发应用,开发阶段一直用npx expo start运行测试,一切正常。按照Expo文档用eas build -p android --profile preview打包APK后,安装到设备启动就直接崩溃,没有错误提示。
我的eas.json配置如下:
{ "build": { "preview": { "android": { "buildType": "apk" } }, "preview2": { "android": { "gradleCommand": ":app:assembleRelease" } }, "preview3": { "developmentClient": true }, "production": {} } }
我尝试用adb logcat查看日志,只得到以下信息,没找到崩溃相关的有效错误:
/data/data/com.*.myapp/lib-main 07-30 19:58:25.249 28613 29609 D SoLoader: libexpo-modules-core.so found on /data/app/~~auisghsPKDGuFzpW4b0C0Q==/com.*.myapp-AgdjN0bcWCy6xfENs1Iezw==/lib/arm64 07-30 19:58:25.249 28613 29609 D SoLoader: Not resolving dependencies for libexpo-modules-core.so 07-30 19:58:25.250 28613 29598 I AdrenoGLES-0: PFP: 0x016ee190, ME: 0x00000000 07-30 19:58:25.253 28613 29609 V SoLoader: libturbomodulejsijni.so not found on /data/data/com.*.myapp/lib-main 07-30 19:58:25.253 28613 29609 D SoLoader: libturbomodulejsijni.so found on /data/app/~~auisghsPKDGuFzpW4b0C0Q==/com.*.myapp-AgdjN0bcWCy6xfENs1Iezw==/lib/arm64 07-30 19:58:25.253 28613 29609 D SoLoader: Not resolving dependencies for libturbomodulejsijni.so 07-30 19:58:25.255 28613 29609 I ExpoModulesCore: ✅ JSI interop was installed 07-30 19:58:25.256 1104 5549 E surfaceflinger: [frame_perf] perfboost open boost file failed 07-30 19:58:25.257 1104 1888 E surfaceflinger: [frame_perf] perfboost open boost file failed 07-30 19:58:25.258 28613 29609 I ExpoModulesCore: ✅ Constants were exported 07-30 19:58:25.262 602 602 I hwservicemanager: getTransport: Cannot find entry android.hardware.graphics.mapper@4.0::IMapper/default in either framework or device manifest. 07-30 19:58:25.262 28613 29598 I Gralloc4: mapper 4.x is not supported 07-30 19:58:25.262 602 602 I hwservicemanager: getTransport: Cannot find entry android.hardware.graphics.mapper@3.0::IMapper/default in either framework or device manifest. 07-30 19:58:25.262 28613 29598 W Gralloc3: mapper 3.x is not supported 07-30 19:58:25.273 1104 1480 E surfaceflinger: [frame_perf] AutoTurboBoostQuery fd<0 failed, errno=Inappropriate ioctl for device 07-30 19:58:25.273 1104 1480 E surfaceflinger: [frame_perf] AutoBoostConfigQuery fd<0 failed, errno=No such file or directory 07-30 19:58:25.279 1561 1847 D ArtManagerInternalImpl: /data/misc/iorapd/com.*.myapp/1/com.*.myapp.MainActivity/compiled_traces/compiled_trace.pb doesn't exist 07-30 19:58:25.281 1561 1874 I ===> HoustonPackage: addLaunchTimeInfo: for com.*.myapp/.MainActivity isCold:true launchTime:285 07-30 19:58:25.281 1561 1874 I 322 : com.*.myapp#30#285 07-30 19:58:25.281 1561 1847 I ActivityTaskManager: Displayed com.*.myapp/.MainActivity: +285ms
排查与解决方案
1. 精准过滤崩溃日志
当前adb logcat输出未捕获崩溃关键错误,用以下命令过滤应用包名相关的错误日志:
adb logcat *:E | grep "com.*.myapp"
或直接过滤AndroidRuntime的错误日志:
adb logcat -s AndroidRuntime:E
可定位到应用崩溃时的Java层或Native层报错。
2. 检查Expo模块兼容性
- 运行
expo doctor检查依赖冲突,修复所有提示的版本不匹配问题,确保所有Expo模块与当前SDK版本兼容。 - 若使用第三方Native模块,确认其支持Expo预构建,且已在
app.config.js/app.json中正确配置插件。
3. 调整EAS Build配置
- 尝试用
preview2配置打包:
该配置直接调用Gradle的eas build -p android --profile preview2assembleRelease命令,可规避默认APK打包的部分问题。 - 检查签名配置,即使预览包也可能需要签名才能正常运行,在
preview配置中添加:
按提示生成本地签名密钥。"preview": { "android": { "buildType": "apk", "signing": "local" } }
4. 测试开发客户端包
用preview3配置打包开发客户端:
eas build -p android --profile preview3
安装后连接npx expo start,若能正常运行,说明是生产打包时的JS bundle问题,比如未处理的TypeScript错误、生产环境逻辑异常。
5. 检查生产环境代码
- 确认
.env.production文件中已配置所有必要环境变量,Expo会自动加载该文件。 - 排查代码中
__DEV__判断是否正确,避免生产环境执行开发环境专属逻辑。 - 运行
npx expo export --platform android生成静态bundle,检查导出过程是否有报错,提前发现问题。
内容的提问来源于stack exchange,提问作者Ilay Gov
相关产品推荐
相关产品推荐

