Expo裸工程构建报错:libfbjni.so缺失且无构建规则
解决Expo Bare Workflow构建时libfbjni.so缺失的问题
检查依赖版本兼容性
确认package.json里expo和expo-av的版本与当前使用的Expo SDK完全匹配,版本不兼容是native依赖缺失的常见原因。执行npm install --force或yarn install --force强制同步依赖,避免缓存干扰。重新生成Native配置
执行npx expo prebuild --clean,这个命令会彻底重建Android和iOS的native目录结构,比单独的./gradlew clean更能解决配置损坏问题。调整Android ABI过滤规则
打开android/app/build.gradle,在release构建类型中添加正确的ABI过滤,确保覆盖你真机的架构(比如arm64-v8a是多数现代安卓机的架构):android { buildTypes { release { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64' } } } }确保fbjni依赖仓库和版本正确
打开android/build.gradle,在allprojects.repositories中添加Facebook的maven仓库,确保能拉取到fbjni依赖:allprojects { repositories { // 保留现有仓库,新增以下两行 maven { url 'https://maven.facebook.com' } maven { url 'https://maven.google.com' } } }同时在
android/app/build.gradle的dependencies中手动指定fbjni版本(版本号需匹配你的Expo SDK,比如SDK 49对应0.2.2):dependencies { // 其他依赖不变,新增该行 implementation 'com.facebook.fbjni:fbjni:0.2.2' }清理深层缓存
除了./gradlew clean,还需要:- 执行
npm cache clean --force或yarn cache clean清理包管理器缓存 - 删除
android/.gradle目录,然后重新执行./gradlew assembleRelease构建
- 执行
检查EAS构建配置
打开eas.json,确认android构建配置中的ndk参数与本地build.gradle一致,避免远程构建时使用了错误的ABI过滤规则:{ "build": { "production": { "android": { "buildType": "release", "ndk": { "abiFilters": ["armeabi-v7a", "arm64-v8a", "x86_64"] } } } } }
内容的提问来源于stack exchange,提问作者Frankenstein
相关产品推荐
相关产品推荐

