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

如何从现有React Native应用生成可供第三方使用的.aar文件

从现有React Native项目生成供第三方Android接入的AAR操作步骤

以下步骤经过RN 0.68+版本实测可用,按顺序操作即可:

一、修改Android模块配置

  • 打开项目下android/app/build.gradle文件,将顶部的应用插件声明替换为库插件声明:
    把apply plugin: "com.android.application" 改为 apply plugin: "com.android.library"
  • 在同文件内删除defaultConfig块中的applicationId "你的包名"行,库模块不需要独立应用ID。
  • 注释掉buildTypes块中release配置下的签名相关代码(signingConfig signingConfigs.release),库打包不需要签名配置。

二、调整清单文件与对外入口

  • 打开android/app/src/main/AndroidManifest.xml,删除启动Activity对应的<intent-filter>整个代码块,避免接入宿主时和宿主启动页冲突:
    <!-- 删掉这段 -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    
  • 新建对外暴露的入口类,方便宿主App直接调用启动RN页面,以Kotlin为例,在你项目的包名路径下新建RNEntrance.kt:
    package 替换成你自己的项目包名
    import android.content.Context
    import android.content.Intent
    import com.facebook.react.ReactActivity
    
    object RNEntrance {
        @JvmStatic
        fun openRNPage(context: Context) {
            context.startActivity(Intent(context, ReactActivity::class.java))
        }
    }
    

三、配置打包规则避免冲突

  • 回到android/app/build.gradle,在android配置块内补充以下规则,解决so文件、重复依赖冲突问题:
    android {
        // 原有其他配置保留
        defaultConfig {
            // 补充架构适配配置,覆盖主流设备架构
            ndk {
                abiFilters "armeabi-v7a", "arm64-v8a", "x86_64"
            }
        }
        // 补充打包选项
        packagingOptions {
            pickFirst '**/libc++_shared.so'
            pickFirst '**/libjsc.so'
            pickFirst '**/libhermes.so'
            exclude 'META-INF/DEPENDENCIES'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/LICENSE'
        }
        buildTypes {
            release {
                // 关闭库打包时的混淆、资源压缩,避免类/资源丢失
                minifyEnabled false
                shrinkResources false
                // 其他原有配置保留,注释掉签名配置即可
            }
        }
    }
    

四、执行打包生成AAR

  • 在项目根目录执行依赖安装,确保JS侧依赖、原生依赖链接完整:yarn install(用npm的话执行npm install)
  • 进入android目录执行打包命令:
    • Mac/Linux环境:./gradlew assembleRelease
    • Windows环境:gradlew assembleRelease
  • 打包完成后,生成的AAR文件路径为:android/app/build/outputs/aar/app-release.aar

五、第三方接入注意事项

不推荐直接打全量包含RN核心依赖的fat-aar,这类包体积大、依赖冲突概率极高,建议采用以下轻量接入方式:

  • 宿主App将生成的aar放入app/libs目录,在自身app/build.gradle中添加依赖:
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.aar'])
        // 下面依赖的版本号必须和你打AAR时使用的React Native版本完全一致
        implementation "com.facebook.react:react-android:0.72.7"
        // 如果你的RN项目开启了Hermes引擎,需要补充对应依赖,版本和RN版本保持一致
        implementation "com.facebook.react:hermes-android:0.72.7"
    }
    
  • 宿主App不需要额外配置RN相关的Activity、权限,直接调用你暴露的RNEntrance.openRNPage(上下文)方法即可跳转到RN页面。

常见问题排查

  • 运行时报类找不到:检查宿主引入的RN依赖版本和你打包时的RN版本是否完全一致,若项目中使用了带原生能力的第三方RN库(比如相机、定位类库),需要在宿主侧同步引入对应依赖。
  • 运行时报so文件加载失败:检查packagingOptions中的pickFirst规则是否配置完整,确认ndk过滤的架构覆盖了测试设备的CPU架构。
  • 宿主安装后出现两个桌面图标:检查AAR的AndroidManifest中是否残留了LAUNCHER对应的intent-filter配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:09:22