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

React Native通过JNI集成C++代码Android端构建失败如何解决?

问题排查与解决方法

已定位的错误点

  • HelloWorldModule.java存在语法错误:类继承语句中的ReactContextBaseJavaModule被注释掉,导致类定义非法,编译直接失败
  • build.gradle配置缺失:未指定NDK编译的构建脚本路径,Gradle不会自动编译你写的JNI C代码
  • build.gradle导入错误:com.android.build.OutputFile导入适配问题,该导入在AGP 7.0+版本后包路径变更,RN 0.60+版本默认不需要该导入
  • 架构配置冲突:Application.mk中配置APP_ABI = all和build.gradle中ndk的abiFilters配置冲突,会导致编译产物架构不匹配
  • 大概率缺失导入语句:MainApplication.java中未导入MyReactPackage类,会报类找不到错误

具体修复步骤

  1. 修复HelloWorldModule.java的类定义,去掉父类的注释:
public class HelloWorldModule extends ReactContextBaseJavaModule {
    // 其余原有代码保持不变
}
  1. 修复android/app/build.gradle配置
    • 先删除文件顶部的import com.android.build.OutputFile整行代码
    • 在android块内添加externalNativeBuild配置,指定Android.mk路径:
    android {
        ndkVersion rootProject.ext.ndkVersion
        compileSdkVersion rootProject.ext.compileSdkVersion
        // 新增下面这段配置
        externalNativeBuild {
            ndkBuild {
                path 'src/main/jni/Android.mk'
            }
        }
        defaultConfig {
            // 原有配置保持不变,可调整abiFilters补全常用架构
            ndk {
                abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
                moduleName "hello_world_jni"
                ldLibs "log"
                cFlags "-std=c99"
            }
        }
    }
    
  2. 删除android/app/src/main/jni/Application.mk中的APP_ABI = all配置,以build.gradle中的abiFilters配置为准
  3. 检查MainApplication.java顶部的导入语句,确认添加了以下导入:
import com.thebhwgroup.demo.MyReactPackage;
import java.util.Arrays;
  1. 清理缓存后重新构建:
    依次执行以下命令:
    cd android
    ./gradlew clean
    cd ..
    react-native run-android
    

内容的提问来源于stack exchange,提问作者Jungwon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:45:04