Win7平台下React-Native开发之Android项目打包发布流程

641 查看

一、bundle文件

  React-Native开发步骤中,有一个步骤是使用命令 react-native start 去启动一个基于Node.js的服务,名字为packager。这个packager的主要功能是:

1、监视当前目录下相关文件的改动;

2、监听在本机的8081(默认)端口,为正确的请求提供相应的bundle文件。总结一点来说就是:bundle文件是根据项目目录下相应文件的最新内容来动态生成的,这样在开发过程中就能实时地观察我们修改JS文件所带来的程序的改变。因为这个bundle文件就是最后整个APP的应用逻辑,所以,对于APP打包来说,关键步骤就在于就是如何把这个bundle文件作为生成的静态文件打包进我们的APP中。

二、打包步骤

1、生成密匙

keytool -genkey -v -keystore my-test-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

代码中的 my-test-key.keystore 和 my-key-alias 替换成需要的名字。记住后续步骤中输入的密码等信息,需要用于第四步骤中的gradle脚本的编写。

2、创建 assets 文件夹

  在项目根目录下的 /android/app/src/main/ 目录下创建 assets 文件夹

3、获取 bundle 文件并保存

  首先:确保你在项目根目录下使用了 react-native start 命令启动了 packager,并可以使用浏览器测试能正确获取到bundle文件。
  然后:确保你安装了curl 这个工具或者其他相同功能的工具。
  最后:在项目根目录下输入如下命令:

curl -k "http://localhost:8081/index.android.bundle" > android/app/src/main/assets/index.android.bundle

4、添加 gradle 的 keystore 配置

  在项目根目录下的 /android/app 目录下,找到 build.gradle 文件,在其中添加:

// 在 defaultConfig 后面添加
signingConfigs {
    release {
        storeFile file("/my-test-key.keystore") // 替换成你实际密匙文件所在位置
        storePassword "步骤1中的密码"  // 替换成你实际的密码
        keyAlias "my-key-alias"    // 替换
        keyPassword "步骤1中的密码"  // 替换
    }
}
// 修改原来的配置,主要是加入 signingConfig 这一行
buildTypes {
    release {
        minifyEnabled enableProguardInReleaseBuilds // 记得修改相应的功能启动
        proguardFiles fetDefaultProguardFile('proguard-android.txt), 'proguard-rules.pro' 
        signingConfig signingConfigs.release
    }
}

注意:路径中的 反斜线() 要改成 正斜线(/)。

5、启用 Proguard 代码混淆(可选)

  Proguard 是一个 Java 字节码混淆压缩工具,可剔除项目文件夹中为使用的部分,有效减少APK的大小。在 build.gradle 文件中,启动 Proguard模块:

def enableProguardInReleaseBuilds = true

6、执行打包脚本

  首先:进入项目根目录下的 /android/ 目录中;
  然后:执行 gradle assembleRelease 命令。
  注意:如果出现错误或者没有安装 gradle 工具,需要自行安装 gradle 工具和配置好 GRADLE_HOME 和 PATH,注意和 /android/gradle/wrapper/gradele-wrapper.properties 文件中的版本配置保持一致。也可以使用 gradle clean 清理一下缓存。

7、将APK发布到各大应用市场

  我们可以到 /android/app/build/outputs/apk/ 目录下看到了我们最终发布版的Apk文件。