管理應用程式版本

文章推薦指數: 80 %
投票人數:10人

應用程式和發布服務不應向使用者顯示這個版本值。

警告:Google Play 允許的 versionCode 上限值為2100000000。

versionName :做為使用者所見版本號碼的 ... 平台 AndroidStudio GooglePlay Jetpack Kotlin 文件 遊戲 Language English BahasaIndonesia Español–AméricaLatina Português–Brasil TiếngViệt 中文–简体 中文–繁體 日本語 한국어 登入 AndroidStudio 下載 新功能 使用手冊 預覽 平台 AndroidStudio 下載 新功能 使用手冊 預覽 GooglePlay Jetpack Kotlin 文件 遊戲 認識AndroidStudio 總覽安裝AndroidStudio遷移至AndroidStudio設定IDE鍵盤快速鍵無障礙功能更新IDE和工具 工作流程基本概念 管理專案 總覽建立專案關於PlayFeatureDelivery 新增C和C++程式碼 總覽安裝NDK和CMake為AGP設定NDK設定CMake連結Gradle建立Android程式庫設定持續整合環境 編寫應用程式 總覽加入範本中的程式碼尋找程式碼範例為新裝置新增模組建立Java類別或類型使用Java8語言功能Java8語言支援資料表新增應用程式資源使用LayoutEditor打造UI使用Motion編輯器建立動畫管理應用程式的UI資源設計應用程式主題新增多種密度的向量圖形使用ImageAssetStudio建立圖示建立可調整大小的點陣圖(九宮格)建立WebP圖片將UI在地化新增Android應用程式連結連結至Firebase使用lint檢查項目改善程式碼使用註解提升程式碼檢查效率工具屬性參考資料 建立並執行應用程式 總覽 在模擬器上執行應用程式 總覽建立和管理虛擬裝置從指令列啟動模擬器傳送模擬器主控台指令設定模擬器網路設定硬體加速模擬器功能比較排解模擬器問題 在硬體裝置上執行應用程式 總覽安裝OEMUSB驅動程式取得GoogleUSBDriver建立執行/偵錯設定從指令列建立應用程式 設定版本 總覽設定應用程式模組新增版本相依性設定建構變數使用AndroidGradle外掛程式升級輔助程式Gradle秘訣與方法移轉至Kotlin指令碼 為版本速度進行最佳化調整 總覽排解建構效能問題建立版本設定檔使用MavenPublish外掛程式管理資訊清單檔案縮小應用程式啟用multidex擴充AndroidGradle外掛程式整合自訂C/C++建構系統 為應用程式偵錯 總覽設定開發人員選項寫入和檢視記錄分析堆疊追蹤使用版面配置檢查器對版面配置進行偵錯使用網路檢查器檢查網路流量使用資料庫檢查器對資料庫進行偵錯使用背景工作檢查器為WorkManager工作站進行偵錯檢視裝置上的檔案預先建立APK進行偵錯擷取螢幕畫面錄製影片擷取及讀取錯誤報告使用APKAnalyzer分析版本 測試應用程式 總覽在AndroidStudio中測試從指令列進行測試進階測試設定 其他測試工具 總覽EspressoTestRecorder應用程式檢索器Monkey測試 monkeyrunner參考資料 總覽MonkeyDeviceMonkeyImageMonkeyRunner 剖析應用程式效能 總覽 AndroidStudio分析器 總覽 設定CPU活動 總覽記錄追蹤記錄匯出追蹤記錄匯入追蹤記錄檢查追蹤記錄UI資源浪費偵測設定應用程式以產生追蹤記錄設定檔記憶體用量個人資料能源用量包含預先建立APK的設定檔 評估效能 總覽範例 發布應用程式 總覽發布前的準備工作對應用程式進行版本管理簽署應用程式上傳應用程式 發布程式庫 總覽發布前的準備工作設定發布項目變數設定發布項目的測試韌體上傳程式庫 指令列工具 總覽aapt2adbapkanalyzerapksigneravdmanagerbmgrbundletoold8dmtracedumpdumpsysetc1tooljobbjetifier-standalonelogcatmksdcardretracesdkmanagersystraceperfettozipalign環境變數 疑難排解 已知問題 回報錯誤 AndroidDevelopers AndroidStudio 使用手冊 管理應用程式版本 版本管理是應用程式升級與維護策略的重要一環,原因如下: 對於裝置上已安裝的應用程式版本和可安裝的升級版本,使用者都需要瞭解具體的相關資訊。

其他應用程式(包括您以套件形式發布的其他應用程式)需要向系統查詢您的應用程式版本,才能判斷相容性及識別依附元件。

發布應用程式所用的服務可能需要向您的應用程式查詢版本資訊,才能顯示版本給使用者查看。

此外,為了判斷相容性及建立升級/降級關係,發布服務可能也會需要檢查應用程式版本。

Android系統會利用應用程式的版本資訊防止發生降級情形,但不會將該資訊用於強制執行有關更新或第三方應用程式相容性的限制。

如有任何版本限制,都必須由您的應用程式強制執行,而且應該告知使用者。

Android系統會根據建構檔案中的minSdkVersion設定所示,強制執行有關「系統」版本相容性的限制。

透過這項設定,應用程式可指定與本身相容的最低系統API版本。

詳情請參閱「指定API級別規定」一節。

設定應用程式版本資訊 如要定義應用程式的版本資訊,請在Gradle建構檔案中指定版本設定值。

接著,這些值會在建構程序中併入應用程式的資訊清單檔案。

注意:如果應用程式直接在元素中定義應用程式版本,Gradle建構檔案內的版本值將覆寫資訊清單中的設定。

此外,藉由在Gradle建構檔案中定義這些設定,您可以針對應用程式的各種版本指定不同的值。

為了提升靈活度,以及在資訊清單合併時避免可能的覆寫情況,您應該從元素中移除這些屬性,並改為在Gradle建構檔案中定義版本設定。

以下列出兩種可用的設定,請務必定義這些設定的值: versionCode:做為內部版本號碼的正整數。

這組號碼是由下方的versionName設定所指定,只會用於判定哪個版本較新(號碼越大表示版本越新),並不會向使用者顯示。

Android系統會利用versionCode值防止發生降級情形,做法是以裝置上現已安裝的版本為準,禁止使用者安裝versionCode較低的APK。

這個值是正整數,因此可讓其他應用程式透過程式輔助的方式評估,例如確認升級或降級關係。

您可以視需求將該值設為任何正整數,但應確保應用程式連續發布的個別版本採用依序遞增的值。

如果APK設定先前版本用過的versionCode,就不得上傳至Play商店。

注意:在某些特定情況下,您可能會想上傳versionCode低於最新版本的應用程式版本,例如在即將發布多個APK時預先設定特定APK的versionCode範圍。

如要進一步瞭解如何為多個APK指派versionCode值,請參閱「支援多個APK」一文。

一般而言,您會將第一個應用程式版本的versionCode設為1,接著以單調遞增的方式設定後續個別版本的值,無論該版本屬於主要或次要版本皆然。

也就是說,versionCode值不一定會與使用者看到的應用程式發布版本非常相似(詳情請見下方的versionName)。

應用程式和發布服務不應向使用者顯示這個版本值。

警告:GooglePlay允許的versionCode上限值為2100000000。

versionName:做為使用者所見版本號碼的字串。

此設定可指定為原始字串,或是字串資源的參照。

這個值是字串,因此您可以將應用程式版本描述為..字串,或者任何其他類型的確切或相對版本ID。

除了向使用者顯示之外,versionName並沒有其他用途。

如要定義這類設定的預設值,請將該設定加入defaultConfig{}區塊,此區塊是以巢狀結構的形式置於模組build.gradle檔案的android{}區塊中。

接著,您可以分別定義各建構類型或變種版本的值,藉此針對應用程式的不同版本覆寫這些預設值。

下方的build.gradle檔案列出defaultConfig{}和productFlavors{}區塊中的versionCode與versionName設定。

Groovy android{ ... defaultConfig{ ... versionCode2 versionName"1.1" } productFlavors{ demo{ ... versionName"1.1-demo" } full{ ... } } } Kotlin android{ ... defaultConfig{ ... versionCode=2 versionName="1.1" } productFlavors{ create("demo"){ ... versionName="1.1-demo" } create("full"){ ... } } } 在上方示例的defaultConfig{}區塊中,versionCode值表示當前APK含有應用程式的第二個版本,而versionName字串則指定該版本會向使用者顯示為第1.1版。

此build.gradle檔案一併定義了「demo」和「full」這兩個變種版本。

由於「demo」變種版本將versionName定義為「1.1-demo」,因此會採用這個versionName,而非預設值。

「full」變種版本並未定義versionName,所以會採用預設值「1.1」。

Android架構提供的API可讓您向系統查詢與應用程式相關的版本資訊。

如要取得這類資訊,請使用PackageManager的getPackageInfo(java.lang.String,int)方法。

指定API級別規定 如果您的應用程式要規定適用的特定最低Android平台版本,您可以在應用程式的build.gradle檔案中將版本規定指定為API級別設定。

這些設定會在建構程序中併入應用程式的資訊清單檔案。

透過指定API級別規定,您可以確保應用程式只能安裝在搭載相容Android平台版本的裝置上。

注意:如果您直接在應用程式的資訊清單檔案中指定API級別規定,建構檔案內的對應設定將覆寫資訊清單檔案中的設定。

此外,藉由在Gradle建構檔案中定義這些設定,您可以針對應用程式的各種版本指定不同的值。

為了提升靈活度,以及在資訊清單合併時避免可能的覆寫情況,您應該從元素中移除這些屬性,並改為在Gradle建構檔案中定義API級別設定。

以下列出兩種可用的API級別設定: minSdkVersion:由Android平台的API級別ID所指定,表示應用程式執行平台的最低版本。

targetSdkVersion:指定可執行應用程式的API級別。

在某些情況下,這項設定可讓應用程式採用目標API級別中定義的資訊清單元素或行為,而不是限制應用程式只能採用針對最低API級別所定義的元素或行為。

如要在build.gradle檔案中指定預設的API級別規定,請將上述一或多項設定新增至defaultConfig {}區塊,此區塊是以巢狀結構的形式置於android{}區塊中。

您也可以將這些設定新增到建構類型或變種版本,藉此針對應用程式的不同版本覆寫這些預設值。

下方的build.gradle檔案在defaultConfig{}區塊中指定預設的minSdkVersion和targetSdkVersion設定,並覆寫一個變種版本的minSdkVersion。

Groovy android{ ... defaultConfig{ ... minSdkVersion14 targetSdkVersion24 } productFlavors{ main{ ... } afterLollipop{ ... minSdkVersion21 } } } Kotlin android{ ... defaultConfig{ ... minSdkVersion(14) targetSdkVersion(24) } productFlavors{ create("main"){ ... } create("afterLollipop"){ ... minSdkVersion(21) } } } 準備安裝應用程式時,系統會檢查上述設定的值,並與系統版本比較。

一旦minSdkVersion值大於系統版本,系統就會禁止安裝應用程式。

如果您並未指定這些值,系統則會假設應用程式與所有平台版本相容。

詳情請參閱資訊清單元素說明文件和API級別文件。

如要瞭解Gradle建構設定,請參閱「設定建構變數」一文。

ContentandcodesamplesonthispagearesubjecttothelicensesdescribedintheContentLicense.JavaandOpenJDKaretrademarksorregisteredtrademarksofOracleand/oritsaffiliates. Lastupdated2022-04-20UTC. [{ "type":"thumb-down", "id":"missingTheInformationINeed", "label":"缺少我需要的資訊" },{ "type":"thumb-down", "id":"tooComplicatedTooManySteps", "label":"過於複雜/步驟過多" },{ "type":"thumb-down", "id":"outOfDate", "label":"過時" },{ "type":"thumb-down", "id":"translationIssue", "label":"翻譯問題" },{ "type":"thumb-down", "id":"samplesCodeIssue", "label":"示例/程式碼問題" },{ "type":"thumb-down", "id":"otherDown", "label":"其他" }] [{ "type":"thumb-up", "id":"easyToUnderstand", "label":"容易理解" },{ "type":"thumb-up", "id":"solvedMyProblem", "label":"確實解決了我的問題" },{ "type":"thumb-up", "id":"otherUp", "label":"其他" }] Twitter 在Twitter上追蹤@AndroidDev YouTube 造訪Android開發人員的YouTube頻道 LinkedIn 透過LinkedIn與Android開發人員社群互動交流 深入瞭解Android Android 企業專用Android 安全性 原始碼 新聞 網誌 Podcast 探索 遊戲 機器學習 隱私權 5G Android裝置 大螢幕 WearOS AndroidTV 車輛專用Android AndroidThings ChromeOS裝置 版本 Android11 Android10 Pie Oreo Nougat Marshmallow Lollipop KitKat 說明文件和下載項目 AndroidStudio指南 開發人員指南 API參考資料 下載Studio AndroidNDK 支援服務 回報平台錯誤 回報說明文件錯誤 GooglePlaysupport 參加研究調查 Android Chrome Firebase GoogleCloudPlatform 所有產品 隱私權 授權 品牌宣傳指南 透過電子郵件接收最新消息與相關訣竅 訂閱 Language English BahasaIndonesia Español–AméricaLatina Português–Brasil TiếngViệt 中文–简体 中文–繁體 日本語 한국어



請為這篇文章評分?