ReactNative项目最终要面向市场, 生成签名的Apk应用程序, 并发布到各大市场. 官网已经提供了参考, 非常简单, 现在啰嗦几句.
1. 去掉开发模式
修改主页入口, setUseDeveloperSupport(false)
, 去掉开发者支持功能.
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModuleName("index.android")
.addPackage(new MainReactPackage())
.setUseDeveloperSupport(false)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
2. Gradle
Gradle是生成Apk的工具, 配置签名和Proguard.
android {
...
signingConfigs {
release {
storeFile file(‘key/SpringRainKey‘)
storePassword ‘chunyu‘
keyAlias ‘chunyu‘
keyPassword ‘chunyu‘
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true // Set this to true to enable Proguard
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
}
设置签名signingConfigs
: 存储文件(storeFile)位置
, 存储密码(storePassword)
, key别名(keyAlias)
, key密码(keyPassword)
.
生成Release包模式.
signingConfig signingConfigs.release
启用Proguard.
minifyEnabled true
注意
signingConfigs
需要在buildTypes
后面, 否则找不到方法.
3. Proguard内容
这个官方文档没有提到, 不配置会报错.
java.lang.NoSuchMethodError: no static or non-static method "Lcom/facebook/react/bridge/ReadableNativeArray;.getType(I)Lcom/facebook/react/bridge/ReadableType;"
在proguard-rules.pro
中, 保留React的所有代码, 添加在最后.
# 禁止混淆react
-keep public class com.facebook.react.** {
public protected *;
}
4. 执行
在android
文件夹内执行
./gradlew installRelease
即可生成Release包, 并安装入手机, 最终包的位置.
./android/app/build/outputs/apk/app-release.apk
ReactNative项目开发模式已经很成熟了, 我们可以把开发完的项目, 通过以上方式, 生成最终线上的包进行发布.
OK, Enjoy it!
时间: 2024-10-11 05:45:05