美文网首页
ReactNative环境下生成release包

ReactNative环境下生成release包

作者: ModestStorm | 来源:发表于2017-09-19 11:38 被阅读0次

在ReactNative环境下生成release包,主要包括以下几步:

  • 生成签名密钥keyStore
  • 在AS中配置并在release配置中引用keyStore
    *保存 js.bundle到资源目录app/src/main/assets中.
  • 混淆java代码
  • 执行gradleAssemble命令打包。

1.终端下执行如下命令生成密钥keyStore,命令行中输入密钥,最终会在当前目录中生成react.keystore文件并复制到项目中使用.

keytool -genkey -alias react -keyalg RSA -validity 3650 -keystore react.keystore

创建了一个名为react.keystore的别名为react的采用RSA加密算法的有效期为10年的证书文件
  • genkey 生成文件。
  • alias 别名。
  • keyalg 加密算法。
  • validity 有效期。
  • keystore 文件名
2. 在AS中配置并在release配置中引用keyStore
signingConfigs{//引用签名配置
        release {
            storeFile file("react.keystore")
            storePassword "react-native"
            keyAlias "react"
            keyPassword "react-native"
        }
    }

    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release //引用签名配置
        }
    }
3.保存js.bundle文件到资源目录app/src/main/assets

在项目根目录下执行下面的命令,会在assets中生成index.android.bundle文件.

react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output app/src/main/assets/index.android.bundle --assets-dest app/src/main/res/

React Native 的开发版需要有启动一个本地服务随时发送更新后的 js bundle 文件。如果要打正式包,需要把 js bundle 文件保存到 Android 项目的 assets/ 目录下。这样,正式包就不需要本地服务支持了.
开发模式调试的时候 js 代码会立即生效,无需执行以上命令,但每次正式打包的时候如果修改了 js 代码都必须先执行以上命令。

4.混淆java代码,混淆规则参照facebook官网
def enableProguardInReleaseBuilds = true//混淆开关
buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release //引用签名配置
        }
    }
5.执行gradleAssemble命令打包.

gradleAssemble
android/app/build/outputs/apk/app-release.apk安装即可.

相关文章

网友评论

      本文标题:ReactNative环境下生成release包

      本文链接:https://www.haomeiwen.com/subject/ezkwsxtx.html