使用npx expo run:android构建失败,weak_ptr与NDK异常求助
Expo Android构建失败排查方案
环境信息
- Expo: ~51.0.8
- React: 18.2.0
- React Native: 0.74.1
- 已安装NDK版本:21.4.7075529、27.0.11718014
- SDK工具:Android SDK Build tools 35-rc4、CMake 3.22.1
- SDK平台:Android 14.0(API34)
问题1:虚拟设备启动提示libandroid-emu-metrics.dll缺失
解决步骤
- 打开Android Studio的SDK Manager,进入SDK Tools标签,找到Android Emulator,先卸载再重新安装最新版本
- 检查Android SDK目录下的
emulator文件夹(通常路径为%ANDROID_HOME%\emulator),确认是否存在该dll文件;若缺失,可从另一台正常运行的Android模拟器目录复制该文件,或直接下载对应版本的模拟器安装包覆盖现有目录 - 暂时关闭杀毒软件或安全防护工具,部分软件会误删模拟器的核心动态库文件
问题2:真机/Android Studio中出现>:expo-modules-core:buildCMakeDebug[arm64-v8a] FAILED,核心错误no viable constructor or deduction guide for deduction of template of 'weak_ptr'
解决步骤
- 锁定兼容的NDK版本
React Native 0.74官方指定兼容NDK版本为25.2.9519653,过旧或过新的NDK都会导致C++编译兼容问题。在项目根目录的android/build.gradle中添加以下配置强制指定版本:
buildscript { ext { ndkVersion = "25.2.9519653" } // 保留原有配置内容 }
随后打开SDK Manager,安装NDK 25.2.9519653版本
- 清理项目缓存并重新预构建
执行以下命令清理缓存并重新生成Android项目文件:
npx expo prebuild --clean cd android && ./gradlew clean
- 确认expo-modules-core版本匹配
Expo 51对应的expo-modules-core版本应为~1.18.1,检查项目的package.json,确保依赖锁定该版本,若版本不符,执行:
npm install expo-modules-core@~1.18.1 --save-exact
- 指定CMake版本
在android/app/build.gradle的externalNativeBuild块中明确指定CMake版本为已安装的3.22.1:
android { // 保留原有配置内容 externalNativeBuild { cmake { version "3.22.1" } } }
内容的提问来源于stack exchange,提问作者shay_solo
相关产品推荐
相关产品推荐

