React-Native之工程打包

android

生成秘钥

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

1、使用keytool命令生成证书:
-genkey

-alias my-key-alias(别名)

-keypass 123456(别名密码)

-keyalg RSA(算法)

-keysize 2048(密钥长度)

-validity 10000(有效期,天单位)

-keystore D:/keys/tomcat.keystore(指定生成证书的位置和证书名称)

-storepass 123456(获取keystore信息的密码)

这条命令会要求你输入密钥库(keystore)和对应密钥的密码,然后设置一些发行相关的信息。最后它会生成一个叫做my-release-key.keystore的密钥库文件。

设置gradle变量

把my-release-key.keystore文件放到你工程中的android/app文件夹下。

2.编辑~/.gradle/gradle. properties或../android/gradle.properties(一个是全局gradle.properties,一个是项目中的gradle.properties,大家可以根据需要进行修改) ,加入如下代码:

1
2
3
4
MYAPP_RELEASE_STORE_FILE=your keystore filename  
MYAPP_RELEASE_KEY_ALIAS=your keystore alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****

提示:用正确的证书密码、alias以及key密码替换掉 *。

在gradle配置文件中添加签名配置

编辑 android/app/build.gradle文件添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
}
}
}

主要点在于signConfigs的配置

通过rn命令生成bundle文件

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

–entry-file Path to the root JS file, either absolute or relative to JS root [required] (入口文件)

–platform Either “iOS” or “Android”(平台)

–transformer Specify a custom transformer to be used (absolute path) [default: “/Users/babytree-mbp13/projects/xcodeProjects/AwesomeProject/node_modules/React-native/packager/transformer.js”]

–dev If false, warnings are disabled and the bundle is minified [default: true] (是否为开发环境, 正式环境为false, 正式环境则禁用掉warning且压缩bundle)

–prepack If true, the output bundle will use the Prepack format. [default: false]

–bridge-config File name of a a JSON export of __fbBatchedBridgeConfig. Used by Prepack. Ex. ./bridgeconfig.json

–bundle-output File name where to store the resulting bundle, ex. /tmp/groups.bundle [required]

–bundle-encoding Encoding the bundle should be written in (https://nodejs.org/api/buffer.html#buffer_buffer). [default: “utf8”]

–sourcemap-output File name where to store the sourcemap file for resulting bundle, ex. /tmp/groups.map

–assets-dest Directory name where to store assets referenced in the bundle

–verbose Enables logging [default: false]

编译apk

1
cd android && ./gradlew assembleRelease

ios

需要使用apple开发者账号, 并生成秘钥并进行app证书签名, 步骤较复杂, 博主暂未走通, 所以就不赘述了…

文章目录
  1. 1. android
    1. 1.1. 设置gradle变量
    2. 1.2. 在gradle配置文件中添加签名配置
    3. 1.3. 通过rn命令生成bundle文件
    4. 1.4. 编译apk
  2. 2. ios
|