被 iOS 上架整個人弄到快瘋掉後,聽說 Android 上架比較簡單,筆者姑且是相信了,網路上很多的教學看起來確實如此。而且有一些麻煩的部分在前一篇已經完成了,例如 App Icon 的設計以及產出所有的 Size,接下來就來快速的完成剩餘的部分。
在 android/app/src/main/res
裡面有放著一些 Android 內建的 Icon:
這邊直接繼續使用上一篇 MakeAppIcon 所產出的 Icon,把預設的 Icon 用解壓縮後的 appicon/android
目錄中的 Icon 覆蓋掉即可。
工具使用的好,就不太需要煩惱。
建構 APK 應該是 Android 上架過程中最複雜的一步,這步驟也能拆分成幾個比較細的步驟:
首先,必須用 keytool
來產生一個私鑰:
$ keytool -genkey -v -keystore irongithub.keystore -alias irongithub -keyalg RSA -keysize 2048 -validity 10000
這邊用 irongithub.keystore
來當檔案名稱,keystore
會包含一個可以存活 10000
天的 key。alias
必須記住,晚點會用到。
需注意,不要隨便把私鑰給別人,不要 Commit 進 git。
把前面一個步驟產生的 keystore 檔案放到 android/app
目錄
修改家目錄裡面的 gradle
設定檔在 ~/.gradle/gradle.properties
:
IRONGITHUB_RELEASE_STORE_FILE=irongithub.keystore
IRONGITHUB_RELEASE_KEY_ALIAS=irongithub
IRONGITHUB_RELEASE_STORE_PASSWORD=*****
IRONGITHUB_RELEASE_KEY_PASSWORD=*****
(***** 要換成自己的密碼)
這邊的變數名稱不一定要這樣命名,不過之後會用到鎖以要一致。keystore 檔名跟 alias 就是之前下 keytool
指令時所指定的,密碼也是當時所輸入的。
如果 App 已經上架到 Play Store,但是你把 keystore 搞不見或是忘了密碼,那只好用不同的名字再上架,只是評分那些都必須重新再來,所以記得要好好的備份。
編輯 android/app/build.gradle
,加上 signing
相關的部分:
...
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file(IRONGITHUB_RELEASE_STORE_FILE)
storePassword IRONGITHUB_RELEASE_STORE_PASSWORD
keyAlias IRONGITHUB_RELEASE_KEY_ALIAS
keyPassword IRONGITHUB_RELEASE_KEY_PASSWORD
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
...
其他部分都不管,只要加上 signingConfigs
還有 buildTypes.release.signingConfig
。
這邊相關的變數定義都來自上一個步驟,也可以自己改。
Gradle 的 assembleRelease
會把所有需要執行的 JavaScript 也都打包進 APK,所以只要執行:
$ cd android && ./gradlew assembleRelease
產生的 APK 會出現在 android/app/build/outputs/apk/app-release.apk
:
跟 iOS 一樣,應該要先確認打包好的 APK 是跑得起來的再來上架:
$ react-native run-android --configuration=release
這邊
v0.40.0
的文件似乎還沒有更新,害我嘗試好久...
中間有遇到過一個 INSTALL_FAILED_UPDATE_INCOMPATIBLE
的錯誤:
參照這篇 使用 adb uninstall
後問題就解決了。
其他的細節可以參考 React Native 官方的教學
到 Android 開發者網站 點擊 Developer Console
:
當然一樣必須有 Google Player 開發者帳號
點擊 在 Google Play 發佈 Android 應用程式
:
一如往常的,填寫一些資料:
漸漸的把它完成。
為了掌控內容不會有暴力、色情、賭博違反某些國家法律,一樣是要做內容的分級:
這邊筆者一樣是選擇免費,然後在所有國家發行:
最麻煩的事一樣是截圖,除了 Icon 已經有產生過以外,使用這篇的評論所提到的指令來在模擬器中截圖:
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png
都搞定後左邊的項目都會有綠勾勾,這時候就是已可發佈
狀態,就可以點擊發佈應用程式
:
完成後,App 就會進入待發佈
狀態囉,就慢慢等囉,應該會在一天內發佈。
確實 Android 遇到的問題比 iOS 簡單一點,花時間最久就是在 React Native 官方文件的錯誤上,其他都是查一查快速解決的問題。至今也算是達成當初所立下兩平台上架的目標 (先不考慮被 reject 哈),這兩三天瘋狂嘗試的心酸血淚希望能幫助一些想要完成 App 上架的讀者。