You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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配置打包:
    eas build -p android --profile preview2
    
    该配置直接调用Gradle的assembleRelease命令,可规避默认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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:37:32