react native打包apk

2018-05-17 14:55:46 浏览数 (1)

前言

最近自己的react native app已经完成了,博主想将其打包成android apk运行在安卓端的手机上。然后遇到了一系列的问题。经过一段时间的踩坑,已经成功打包成apk文件并在手机端正常运行和显示。下面介绍一下react native打包成android apk的原理和步骤。

基本原理

react native程序在调试的时候,在虚拟机端是通过连接本地node服务来获取js文件,所以可以实现热加载。但是要打包成apk时,需要将这些js文件打包成bundle包,当做android的运行资源。放置在assets目录下(离线包的方式)。

所以apk打包的过程是先将js文件打包成bundle包,然后再将程序打包成apk文件。

bundle打包

1.启动sever,即本地的node服务(之前调试过程中获取js文件的服务),在工程主目录下启动

代码语言:javascript复制
npm start

2.创建bundle包存放目录

代码语言:javascript复制
mkdir -p android/app/src/main/assets

注:可以手动创建

3.打包bundle

代码语言:javascript复制
curl -k"http://localhost:8081/index.android.bundle">android/app/src/main/assets/index.android.bundle

注:从node服务拉取bundle包并存放到目标目录下

4.配置bundle运行环境

代码语言:javascript复制
react-native bundle --entry-file index.js --bundle-output ./android/app/src/main/assets/index.android.jsbundle --platform android --assets-dest ./android/app/src/main/res/ --dev false

注:上述步骤的作用是配置入口文件、平台等。如果缺少上述的步骤,会报错,找不到入口文件。

APK打包

1.生成签名文件

使用keyTool工具生成签名文件,在jdk安装目录的bin下运行

代码语言:javascript复制
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

详细可参考官网:https://facebook.github.io/react-native/docs/signed-apk-android.html

-alias 后跟着别名,要记住这个别名,因为在项目中要进行配置,后面会让输入密码,也要记住,同样在后面配置中会用到。

运行完后,会在当前目录下出现my-release-key.keystore的文件,即签名文件。记住文件路径或将此文件导入到android/app目录下。

注:要保护你的签名文件私有,不要将其一起提交给版本控制工具(即暴露出去)

2.项目中配置签名文件信息

    1)在android/gradle.properties中配置

代码语言:javascript复制
MYAPP_RELEASE_STORE_FILE=my-example-key.keystore            (---签名文件名)
MYAPP_RELEASE_KEY_ALIAS=my-example-alias                    (---签名名称)
MYAPP_RELEASE_STORE_PASSWORD=123456                         (---仓库密码)
MYAPP_RELEASE_KEY_PASSWORD=123456                           (---key密码)

    2)在android/app/build.graddle中配置

代码语言:javascript复制
在androdi/app/build.graddle里面配置
  signingConfigs {
    release {
      storeFilefile ("签名文件路径")
      storePassword "仓库密码"
      keyAlias "签名名称"
      keyPassword "key密码"
            }
        }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release 
        }
    }

3.打包生成签名的apk

进入android目录,执行:

代码语言:javascript复制
gradlew.bat assembleRelease

或者:

代码语言:javascript复制
gradle assembleRelease

注:生成的APK文件在/android/app/build/outputs/apk下,去手机端安装你的app吧

0 人点赞