React Native Android打包

离线包:ReactNative 和你写的 js文件、图片等资源都打包放入 App

使用 react-native bundle --help 来查看打包的具体参数。下面列举一些主要参数:

    --entry-file           RN入口文件的路径, 绝对路径或相对路径
    --platform [string]          ios 或 andorid
    --transformer [string]       Specify a custom transformer to be used
    --dev [boolean]              如果为false, 警告会不显示并且打出的包的大小会变小
    --prepack                    当通过时, 打包输出将使用Prepack格式化
    --bridge-config [string]     使用Prepack的一个json格式的文件__fbBatchedBridgeConfig 例如: ./bridgeconfig.json
    --bundle-output      打包后的文件输出目录, 例: /tmp/groups.bundle
    --bundle-encoding [string]   打离线包的格式 可参考链接https://nodejs.org/api/buffer.html#buffer_buffer.
    --sourcemap-output [string]  生成Source Map,但0.14之后不再自动生成source map,需要手动指定这个参数。例: /tmp/groups.map
    --assets-dest [string]       打包时图片资源的存储路径
    --verbose                    显示打包过程
    --reset-cache                移除缓存文件
    --config [string]            命令行的配置文件路径

1.在 android/app/src/main/ 目录下创建 assets 目录

执行命令

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

2.生成签名密钥

Android要求所有应用都有一个数字签名才会被允许安装在用户手机上,所以在把应用发布到类似Google Play store这样的应用市场之前,你需要先生成一个签名的APK包
keytool命令生成一个私有密钥:

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

1.my-release-key是文件名,my-key-alias是别名
2.如果命令执行不成功请尝试,进入到keytool命令存放的目录再执行(在JDK的bin目录中)

按照提示信息设置一些发行相关的信息,最后将生成my-release-key.keystore密钥库文件(注意:请记得妥善地保管好你的密钥库文件,不要上传到版本库或者其它的地方),密钥库里应该已经生成了一个单独的密钥,有效期为10000天。(--alias参数后面的别名是你将来为应用签名时所需要用到的,所以记得记录这个别名。)

3.设置gradle变量

  • 把my-release-key.keystore文件放到工程中的android/app文件夹下。
  • 修改android/gradle.properties文件,添加如下的代码(注意替换xx为你自己设置的密钥和密码)
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=XXX
MYAPP_RELEASE_KEY_PASSWORD=XXX

4.添加签名到项目的gradle配置文件

编辑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 //添加这块代码 
        }
    }
}
...

5.生成APK包

切换到android目录下运行命令:

gradlew assembleRelease

Gradle的assembleRelease参数会把所有用到的JavaScript代码都打包到一起,然后内置到APK包中

你可能感兴趣的:(React Native Android打包)