如何将React Native项目导出为Android端.aar与iOS端.framework?
React Native项目导出AAR(Android)与Framework(iOS)全流程教程
以下步骤基于React Native 0.60+版本操作,更低版本需额外适配autolinking相关逻辑。
前置准备
- 本地RN开发环境正常可用,Android SDK、Xcode配置符合对应RN版本的要求
- 现有RN项目功能在debug模式下验证正常,无运行报错
一、Android端生成AAR包
- 第一步:用Android Studio打开RN项目根目录下的
android文件夹,新建Android Library模块,命名可自定义,比如rn_export_lib,模块的minSdkVersion需和原有RN项目app模块的minSdkVersion保持一致 - 第二步:配置新模块的依赖,在模块根目录的
build.gradle文件中添加React Native相关依赖,配置和原有app模块保持一致即可 - 第三步:生成RN打包产物,在RN项目根目录执行命令:
npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/rn_export_lib/src/main/assets/index.android.bundle --assets-dest android/rn_export_lib/src/main/res/
注意:如果模块的main目录下没有assets文件夹,需要先手动创建
- 第四步:执行AAR打包命令,在android目录下执行:
./gradlew rn_export_lib:assembleRelease
- 第五步:获取产物,打包完成后AAR文件会生成在
rn_export_lib/build/outputs/aar/rn_export_lib-release.aar路径下
二、iOS端生成Framework包
- 第一步:用Xcode打开RN项目根目录下的
ios文件夹,新建Cocoa Touch Framework模块,命名可自定义,比如RNExportFramework,模块的最低支持iOS版本需和原有RN项目保持一致 - 第二步:配置Pod依赖,在项目的Podfile中添加该Framework模块的React相关依赖关联,完成后在ios目录执行
pod install更新依赖 - 第三步:生成RN打包产物,在RN项目根目录执行命令:
npx react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ios/RNExportFramework/main.jsbundle --assets-dest ios/RNExportFramework/
- 第四步:将生成的
main.jsbundle和对应资源文件夹拖入Xcode的Framework模块目录,勾选「Copy items if needed」,target选择对应Framework模块 - 第五步:配置Framework编译参数:在Build Settings中将「Build Libraries for Distribution」设为YES,「Mach-O Type」按需选择静态库/动态库
- 第六步:编译生成Framework,可分别选择真机、模拟器架构编译后用lipo命令合并为通用架构,也可直接执行xcodebuild命令批量编译,最终产物为后缀为
.framework的文件夹
注意事项
- 若RN项目依赖第三方原生模块,需要将对应原生模块的代码/依赖同步打包到产物中,或告知接入方同步添加对应依赖
- 产物的RN版本需和接入方原生项目集成的RN版本完全一致,避免出现兼容性报错
- 正式打包前可先打dev版本产物验证功能,确认正常后再打release版本
内容的提问来源于stack exchange,提问作者acul
相关产品推荐
相关产品推荐

