采用aar方式将react-native集成到已有安卓APP
要将React Native集成到已有的Android应用中,并以AAR格式提供,你需要按照以下步骤操作:
- 创建一个React Native项目。
- 构建生成的React Native代码为AAR文件。
- 将AAR文件集成到你的Android项目中。
以下是实现这些步骤的简化指南和示例代码:
# 在你选择的目录下初始化一个React Native项目
npx react-native init MyReactNativeApp
# 进入项目目录
cd MyReactNativeApp
# 修改gradle文件以生成AAR文件
# 修改android/gradle.properties文件,添加以下内容
BUILD_TYPE=release
# 修改android/app/build.gradle文件,在底部添加以下内容
task makeJar(type: Copy) {
// Delete old jar file
delete 'build/outputs/react.aar'
// Set the new jar file destination
from('build/outputs/aar/')
into('build/outputs/')
include('*.aar')
rename ('(.*)-release.aar', 'react.aar')
}
makeJar.dependsOn(clean, build)
# 执行gradle任务生成AAR文件
./gradlew makeJar
# 生成的AAR文件位于
# android/build/outputs/react.aar
集成生成的react.aar
到你的Android项目中:
- 将
react.aar
复制到你的Android项目的libs
目录下。 - 在你的
build.gradle
文件的dependencies
部分添加如下代码:
implementation(name: 'react', ext: 'aar')
- 确保你的
settings.gradle
文件包含了React Native模块:
include ':react-native-module'
project(':react-native-module').projectDir = new File(settingsDir, '../node_modules/react-native/android')
- 在你的主应用的
build.gradle
文件中添加React Native模块依赖:
implementation project(':react-native-module')
- 初始化ReactInstanceManager并启动React Native应用。在你的
Application
类或者启动Activity中添加:
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import java.util.Arrays;
import java.util.List;
public class MyApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage()
);
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
在合适的地方启动React Native应用:
ReactInstanceManager mReactInstanceManager = ((MyApplication) getApplication()).getReactNative
评论已关闭