React Native Android打包

Android要求所有应用都有一个数字签名才能被允许安装在用户手机上,所以在把应用发布到Google Play store这些应用市场之前,你需要先生成一个签名的APK包,详细细节可参考Android应用签名,本文主要介绍React Native App快速签名。

在打包之前确保我们安装了Android开发环境,参考React Native安卓开发环境搭建

秘钥

我们需要创建一个签名秘钥,之后用该秘钥签名App,可以使用Android Studio生成秘钥并签名App,但是比较繁琐,我们介绍React Native App快速签名打包流程。

首先,使用keytool工具生成秘钥:

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

注:Windows上keytool命令放在JDK的bin目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin),你可能需要在命令行中先进入该目录才能执行此命令。

设置Gradle

  1. my-release-key.keystore文件放到你工程中的android/app文件夹下;
  2. 编辑~/.gradle/gradle.properties(没有这个文件你就创建一个),添加如下的代码(注意把其中的****替换为相应密码);
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****

注:~表示用户目录,比如windows上可能是C:\Users\用户名,而mac上可能是/Users/用户名

添加签名

打开项目目录下的android/app/build.gradle文件,添加如下的签名配置:

...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file(MYAPP_RELEASE_STORE_FILE)
            storePassword MYAPP_RELEASE_STORE_PASSWORD
            keyAlias MYAPP_RELEASE_KEY_ALIAS
            keyPassword MYAPP_RELEASE_KEY_PASSWORD
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}
...

打包

在终端执行如下指令:

$ cd android
$ ./gradlew assembleRelease
  1. assembleRelease参数会把所有用到的JavaScript代码都打包到一起,然后内置到APK包中;
  2. 支持自定义JavaScript代码以及静态资源打包的文件名或目录结构等,可以阅读android/app/build.gradle文件;

在windows的传统CMD命令行下则需要去掉./

App安装包在android/app/build/outputs/apk/app-release.apk,可以直接分发安装了。

真机调试

上面指令是打出生产环境安装包,很多时候我们开发过程中需要在真机进行调试,这个时候我们需要提前做好:

  1. 确保手机与电脑设备在同一WiFI环境下;
  2. 需要开启手机设备USB开发者模式;

然后在命令终端输入指令查看:

adb devices

确保手机设备已正确连接,且确保一次仅连接一个手机设备。

然后执行:

react-native run-android

即可在设备中安装调试包。

也许我们将看到如下异常提示,显示无法加载JS bundle资源:

Error

这个是电脑ip端口资源转发异常造成,对于Android5.0以上系统,我们只需要在PC端执行:

adb reverse tcp:8081 tcp:8081

表示adb发送指令至手机设备,服务即可正常连接。

而对于Android5.0以下系统,则需要另外处理,摇晃设备,或者执行如下指令:

adb shell input keyevent 82

打开手机开发者菜单:

Dev Tools

然后依次点击Dev SettingsDebug server host for device,输入PC端ip地址及端口号,如:10.0.2.2:8081,PC端ip地址查看使用ifconfig(Linux)或ipconfig(windows)指令。

最后Reload JS即可开始调试应用。

原创文章,转载请注明: 转载自 熊建刚的博客

本文链接地址: React Native Android打包

熊 建刚

热爱前端,但不局限于前端,喜欢尝试各种新技术,爱好读书。

发表评论

电子邮件地址不会被公开。 必填项已用*标注