Android
Android要求所有應用都必須先使用證書進行數字簽名,然后才能安裝。為了通過Google Play商店分發您的Android應用,需要使用發布密鑰對其進行簽名,然后再將其用於以后的所有更新。
生成證書
在android/app下執行
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
在生成過程中需要填寫一些信息。
修改 android/gradle.properties
android.useAndroidX=true
android.enableJetifier=true
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore // 生成證書的名字
MYAPP_RELEASE_KEY_ALIAS=my-key-alias // 生成證書的別名
編輯 android/app/build.gradle文件添加如下代碼
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword pass
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword pass // 證書密碼
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
關於安全性的注意事項: MAC開發可以配置免明文密碼輸入,通過把證書訪問密碼寫入系統鑰匙串里面。每次build時通過自動讀取鑰匙串中的密碼。設置鏈接。
def getPassword(String currentUser, String keyChain) {
def stdout = new ByteArrayOutputStream()
def stderr = new ByteArrayOutputStream()
exec {
commandLine 'security', '-q', 'find-generic-password', '-a', currentUser, '-s', keyChain, '-w'
standardOutput = stdout
errorOutput = stderr
ignoreExitValue true
}
//noinspection GroovyAssignabilityCheck
stdout.toString().trim()
}
def pass = getPassword("android_keystore","android_keystore")
設置Android版本
android/app/build.gradle
中,設置對應的版本號versionName,versionCode
打包Android Release包
cd android
./gradlew bundleRelease // aab
./gradlew assembleRelease // apk
./gradlew assembleRelease // 打包並安裝
Android App Bundle 格式發布應用,就需要使用Google Play 應用簽名(FQ訪問)。
aab 新的應用發布格式 Android App Bundle 是一種更有效的方式來構建和發布您的應用。Android App Bundle 讓您可以更輕松地以更小的應用程序大小提供出色的體驗,從而支持當今各種各樣的Android設備。切換很容易。您無需重構代碼即可從較小的應用程序中受益。適用於Android Studio 3.2或更高版本以及Unity 2018.3 beta版。
Google Play的新應用服務模式稱為動態傳遞,然后使用您的應用包為每個用戶的設備配置生成並提供優化的APK,因此他們只下載運行您的應用所需的代碼和資源。您不再需要構建,簽署和管理多個APK來支持不同的設備,用戶可以獲得更小,更優化的下載。
如何使用Android APP Bundles
環境要求:Android Studio 3.2+
代碼配置:
在app中的build.gradle文件中的android閉包中添加如下代碼:
android {
......
bundle {
density {
// Different APKs are generated for devices with different screen densities; true by default.
enableSplit true
}
abi {
// Different APKs are generated for devices with different CPU architectures; true by default.
enableSplit true
}
language {
// This is disabled so that the App Bundle does NOT split the APK for each language.
// We're gonna use the same APK for all languages.
enableSplit true
}
}
}
將density、abi、language中的enableSplit設置為true,這樣在生成apk時就可以通過屏幕分辨率、cpu架構、語言進行拆分。
修改完畢之后,進行同步,現在,您可以構建App Bundle。轉到Build> Build Bundle(s)/ APK(s)並選擇Build Bundle(s)
以.apk打出來的release包路徑 android/app/build/outputs/bundle/release/xxx 並且可以將其上傳到android應用平台。
IOS
IOS打包發布之前需要創建一個APPID,對應需要創建app賬號和相應的創建權限。
創建APPID
檢查下剛創建的bundle id
將創建的bundle填入xcode identity
配置開發證書和發布證書
將創建好的證書加入到鑰匙串。
添加測試設備
- 在【Certificates,IDs&Profiles】中點擊【Devices】進入設備管理界面。
- 點擊【+】號,注冊科調試設備,如圖:
打包ipa包
點擊Product --> Archive,按鈕,生成發布文件。當app發布文件上傳到AppStore的發布網站后,未發布提交前,若重新打包上傳,必須要更換其Build的版本號,否則上傳時會報錯。
上傳發布文件
點擊【Validate App】按鈕,校驗安裝包。
標記1 : 驗證當前的App
標記2:發布/導出App
發布新版本、新應用
登錄到Apple開發平台,進入到 App Store Connect。
添加新應用
點擊新建app,填寫應用名稱、平台、語言、SKU等。
創建應用后,在App信息頁面填寫上App的基本信息(產品需要准備好)。然后點擊添加版本或平台。
添加要發布的版本之后, 填寫版本信息。包括App預覽圖和截屏(有截圖尺寸要求,具體參見詳細的截屏要求)。版本的宣傳文本、描述等重要信息。(產品和UI需要准備好對應的版本更新信息、截圖)
在上傳完發布包之后 可以在構建版本中選擇上傳之后的版本。
App審核的信息
如果app有登錄,需要供用戶名和密碼,以便審核人員登錄App進行驗證。並提供下開發的聯系信息。方便及時收到審核反饋。
檢查當前版本的提交信息無誤之后,就可以提交審核。審核的進度有郵件提醒。
自動打包
配置上傳蒲公英托管平台進行測試分發
首先先安裝依賴
# Npm
npm install react-native-upload --save-dev
# Yarn
yarn add react-native-upload --dev
生成配置
npx upload-init
執行命令后會在項目根目錄中創建一個upload.json文件,並生成以下內容:
// 未用到的配置,可以置空不填寫,也可以直接刪除
{
// 上傳到蒲公英
"pgy": {
// 上傳憑證,訪問鏈接 https://www.pgyer.com/account/api ,復制Api Key
"pgy_api_key": "",
// App安裝方式,共有兩種 2:密碼安裝,3:邀請安裝
"pgy_install_type": 2,
// App安裝時的訪問密碼,選擇 "2密碼安裝" 時,訪問密碼必填
"pgy_install_password": "123456",
"ios_export_plist": "./ios-export/ad-hoc.plist"
}
}
自動打包上傳
npx upload-pgy
// 填寫更新日志
npx upload-pgy --log "增加xxx功能"
// 忽略平台
npx upload-pgy --no-android
npx upload-pgy --no-ios
// android默認打包release版本,可以改成debug版本
npx upload-pgy --variant=debug
// 默認上傳所有生成的android apk文件,可以使用正則表達式指定文件名稱
npx upload-pgy --apk=app-release.apk
npx upload-pgy --apk=x86_64
npx upload-pgy --apk=release-[0-9]
只打包不上傳
// 同時打包android和ios
npx upload-build --ios-export-plist path/to/xxx.plist
// 安卓默認打包release版本,可以改成debug版本
npx upload-build --ios-export-plist path/to/xxx.plist --variant=debug
// 單獨打包android
npx upload-build --no-ios
單獨打包ios
npx upload-build --no-android --ios-export-plist path/to/xxx.plist
開發過程中要注意
- 每次打完包上傳app store、google play之后,ios、android對應平台的build號需要增加,這是因為在提交應用商店選擇對應的build版本號不允許重復。
- 上傳第三方測試平台,養成每次build構建之后添加對應的更新描述,增加對應的build號,方便以后的回歸測試、查看打包記錄和版本對應更新信息。