iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
Mobile Development

React Native CLI 開發心法系列 第 16

DAY 16 React Native Android 上架前哨戰 - 使用 Google Play 商店發布測試

  • 分享至 

  • xImage
  •  

本篇將分享如何使用 Google play 發佈你要測試的 Android 應用程式。

情境:

APP 的開發到一個段落了,即將要上架,想要在上架前做最後的確認與測試。

目標:

將應用程式打包成正式環境的 aab 檔案,上傳至 Google play 並且使用內部測試的機制分發給測試人員。

設定應用程式版本號碼

versionName

主要是提供給用戶識別版本號碼,是會顯示在 Goole play store 上的,通常會以 主版號.次版號.修訂號主版號.次版號.修訂號.buildNumber 設定。

versionCode 版本代碼

是應用程式內部的版本代碼,也是 Android 系統判斷應用程式要不要更新的唯一依據,通常是整數。
踩過的坑:即使只是在 Google play 發佈內部測試,也不可以亂填 versionCode,因為會影響到正式版本的 versionCode ,所以接下來要說明如何將 versionName 與 versionCode 做好管理。

如果想要重複用重複或舊的版本代碼可以使用 內部應用程式分享進行測試。

自動化產生 versionCode

在 package.json 加入 version 跟 buildNumber 。加入 build number 的原因是同一個版本很可能會在測試階段 build 很多次,透過 build number 可以知道目前是第幾次 build 的版本。

{
  "version": "0.0.12",
  "buildNumber": "1"
}

在 android/app/build.gradle 中

import groovy.json.JsonSlurper

//從 package.json 取得 app version
def getAppVersion() {
    def packageJsonFile = new File("$rootDir/../package.json") 
    def packageJson = new JsonSlurper().parseText(packageJsonFile.text)
    return packageJson["version"]
}
def appVersion = getAppVersion()

// 從 package.json 取得 build number
def getAppBuildNumber() {
    def packageJsonFile = new File("$rootDir/../package.json")
    def packageJson = new JsonSlurper().parse(file(packageJsonFile))
    return packageJson.buildNumber
}

// 根據 app version 產生 version code
def generateVersionCode(versionName) {
    def parts = versionName.split("\\.")
    // 將版本名稱拆分成4個部分:主版本號、次版本號和修補版本號、build number
    def major = parts[0].toInteger()
    def minor = parts[1].toInteger()
    def patch = parts[2].toInteger()
    def build = getAppBuildNumber().toInteger()
    // 生成版本代碼,使用 100000 x 主版本號 + 1000 x 次版本號 + 10 x 修訂版本號 + build number
    return major * 100000 + minor * 1000 + patch * 10 + build number
}

android {
    defaultConfig {
        ...
        versionName appVersion
        versionCode generateVersionCode(versionName)
        ...
        }
    }

所以根據上面的例子 "version": "0.0.12", "buildNumber": "1" ,轉換成 versionName 是 0.0.12 , versionCode 則是 0 * 100000 + 0 * 1000 + 12 * 10 + 1 = 121 。

打包成 AAB 檔

首先,為了確保 Build 的環境是乾淨的,先執行:

cd android && ./gradlew clean

透過這個指令會將之前 Build 所產生的文件或檔案清除乾淨,可以避免舊有的檔案影響新的建構,進而導致失敗。

接著就根據在 DAY 12 React Native Android 打包 - APK & AAB 中所提到的方式

React Native 0.72 版本使用這個:

npx react-native build-android --mode=release

React Native 0.72 版本以下使用這個:

cd android && ./gradlew bundleRelease

新增內部測試

建立測試名單

在 google play console 的頁面中,測試中的內部測試/測試人數,點建立電子郵件名單。

https://ithelp.ithome.com.tw/upload/images/20230922/20162496ZoxEt5AHMQ.png

上傳應用程式

測試中的內部測試,點建立新版本。
https://ithelp.ithome.com.tw/upload/images/20230922/20162496R1szc5EtN0.png

把剛剛建構的 aab 檔案上傳。

https://ithelp.ithome.com.tw/upload/images/20230922/20162496cZkN6qpfMr.png

這時候會提示你提交的應用程式可能有哪些地方需要修改。

https://ithelp.ithome.com.tw/upload/images/20230922/20162496bHfto2JY40.png

發佈測試版。
https://ithelp.ithome.com.tw/upload/images/20230922/20162496YYINtVq3NU.png

基本上,上傳的應用程式都可以在應用程式套件探索工具中找到。

安裝內部測試版應用程式

使用登記的測試人員信箱登入 Google Play Store,找到你的應用程式,這時就會看到名稱後面會自動加上(內部測試版)就可以安裝了~
https://ithelp.ithome.com.tw/upload/images/20230922/20162496AgqU5ygFO0.jpg

參考資料

語意化版本 2.0.0


上一篇
DAY 15 使用 Firebase 發佈 React Native 測試版 APP - 發佈應用程式
下一篇
DAY 17 上架 Android 應用程式到 Google Play Store
系列文
React Native CLI 開發心法31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Jim
iT邦新手 5 級 ‧ 2023-09-23 09:46:39

這好實用!可以根據構建次數自動增加版號蠻符合需求的。

Ashley iT邦新手 4 級 ‧ 2023-09-25 21:32:06 檢舉

有幫助到你真是太好了:)

我要留言

立即登入留言