- 根据Taro 文档和ReactNative 文档搭建开发环境。
- 安装apktool
- 安装依赖
$ yarn install
$ yarn podInstall
$ yarn global add appcenter-cli
- 注册 appcenter 的账号,地址
- 命令行登录 appcenter
$ appcenter login
- 将
scripts/env.sh
中的CODE_PUSH_USERNAME
导出值替换为自己的username
$ appcenter profile list
Username: silver47gin-gmail.com
Display Name: silver47gin
Email: silver47gin@gmail.com
- 创建 appcenter 应用,将下面的
ANDROID_CODE_PUSH_APP
和IOS_CODE_PUSH_APP
替换为自己的。并替换scripts/env.sh
中的ANDROID_CODE_PUSH_APP
和IOS_CODE_PUSH_APP
。
$ appcenter apps create -d ANDROID_CODE_PUSH_APP -o Android -p React-Native
$ appcenter apps create -d IOS_CODE_PUSH_APP -o iOS -p React-Native
- 创建 appcenter 应用的
deployment
$ source scripts/envs.sh
$ appcenter codepush deployment add -a $CODE_PUSH_USERNAME/$ANDROID_CODE_PUSH_APP Production
$ appcenter codepush deployment add -a $CODE_PUSH_USERNAME/$IOS_CODE_PUSH_APP Production
- 获取
deployment
对应的key
,对应修改android\gradle.properties
中的release_codepush_key=$ANDROID_CODE_PUSH_KEY
和ios\taroDemo\Info.plist
中的<string>$IOS_CODE_PUSH_KEY</string>
$ source scripts/envs.sh
$ appcenter codepush deployment list -a "$CODE_PUSH_USERNAME/$ANDROID_CODE_PUSH_APP" -k
$ appcenter codepush deployment list -a "$CODE_PUSH_USERNAME/$IOS_CODE_PUSH_APP" -k
- 根据网址生成安卓对应的 keystore,放到
android\app
文件夹下,对应修改android\gradle.properties
中的配置
release_keystore_file=$RELEASE_KEYSTORE_FILE
release_keystore_password=$RELEASE_KEYSTORE_PASSWORD
release_keystore_key_alias=$RELEASE_KEYSTORE_KEY_ALIAS
release_keystore_key_password=$RELEASE_KEYSTORE_KEY_PASSWORD
$ yarn start
$ yarn android
- 此处存在 bug,第一次运行
./gradlew assemble
后,可能生成的 apk 中没有index.bundle.js
,需要运行两次./gradlew assemble
命令,目前原因不明。
$ yarn build:android
$ yarn install:android
$ source scripts/envs.sh
$ yarn bundle:android
$ appcenter codepush release -c .temp/android -a "$CODE_PUSH_USERNAME/$ANDROID_CODE_PUSH_APP" -t "*" -d Production
$ yarn start
$ yarn ios
- 使用 xcode 打开 ios 文件夹
- 选择 taroDemo 的 Scheme 和 Any Device 的 Destination
- 点击菜单上的 Product -> Archive
- 点击菜单中的 Window -> Organizar
- 选中生成的 Archive,点击 Distribute APP,按照需要选择后续
$ source scripts/envs.sh
$ yarn bundle:ios
$ appcenter codepush release -c .temp/ios -a "$CODE_PUSH_USERNAME/$IOS_CODE_PUSH_APP" -t "*" -d Production