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

Apple M1芯片下React Native 0.64.1编译报错:mergeAlphaDebugNativeLibs

React Native 0.64.1(Apple M1环境)编译冲突及启动崩溃解决方案

问题说明

  • 运行环境:Apple M1芯片设备,React Native 0.64.1版本
  • 编译报错:

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:mergeAlphaDebugNativeLibs'.

A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
More than one file was found with OS independent path 'lib/armeabi-v7a/libfbjni.so'. If you are using jniLibs and CMake IMPORTED targets, see https://developer.android.com/studio/preview/features#automatic_packaging_of_prebuilt_dependencies_used_by_cmake

  • 无效尝试:在app/build.gradle中添加packagingOptions的pickFirst规则后编译成功,但应用启动直接崩溃:
android {
   // 原有代码
   packagingOptions {
        pickFirst '**/libc++_shared.so'
        pickFirst '**/libfbjni.so'
    }
}

可行解决办法

1. 排除重复的fbjni依赖

先排查哪个第三方库引入了重复的fbjni,执行./gradlew app:dependencies查看依赖树,搜索fbjni相关条目。找到冲突依赖后,在app/build.gradle的dependencies块中添加exclude规则:

dependencies {
    // 示例:假设react-native-reanimated是冲突来源
    implementation(project(':react-native-reanimated')) {
        exclude group: 'com.facebook.fbjni', module: 'fbjni-java-only'
    }
}

2. 指定ABI过滤

在app/build.gradle中明确设置支持的ABI,减少架构层面的库冲突,同时适配M1环境:

android {
    // 原有代码
    defaultConfig {
        ndk {
            abiFilters 'arm64-v8a', 'x86_64'
        }
    }
}

RN 0.64+对arm64-v8a支持完善,M1模拟器默认用x86_64,指定这两个ABI基本能覆盖常用场景。

3. 彻底清理缓存后重建

  • 清理RN缓存:
npx react-native clean
  • 清理Android构建缓存:
cd android && ./gradlew clean
  • 删除并重装依赖:
rm -rf node_modules && npm install
  • 重新构建项目:
npx react-native run-android

4. 用Rosetta模式运行终端

M1芯片的架构兼容问题可能导致编译异常,右键点击终端应用→「显示简介」,勾选「使用Rosetta打开」,重启终端后再执行构建命令。

内容的提问来源于stack exchange,提问作者Shariq Ahmed -

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:05:41