uniapp打包apk安裝,應用版本號衝突,根據已有apk檔案獲取應用版本號

ichynul發表於2021-07-23

安卓安裝apk檔案,應用版本號不能小於上一個版本的,否則無法覆蓋安裝。
uniapp打包的時候,版本號一般都是第一次打包的時候填,之後的打包都留空(讓它自增)。這樣的話,想要從manifest.json中看出應用版本號是不可能的。
如果你接手了一個uniapp的原始碼,如果沒有在Dcloud後臺新增你為協作者,你就需要重新獲取應用的Dcloud appid,當你修改完程式碼打包釋出以後,卻發現安裝不了,提示應用版本號過低?這種情況,如果可以找到一個以前版本的apk安裝包,那麼就可以通過apktool這個工具讀取出來以前的版本號。
方法如下:

  1. 安裝jdk,1.8+
  2. 下載apktool.jar詳細,在C盤新建資料夾apktool,然後把apktool.jar複製到裡面。
  3. 建立apktool.bat檔案,裡面寫入@java -jar "%~dp0apktool.jar" %*
  4. 把[C:\apktool]加入電腦的環境變數(可選,方便在其他地方命令)。
  5. 把你的apk複製到apktool目錄,重新命名為a.apk(其他也行,如b.apk)。
  6. 開啟powershellCMD,執行命令cd C:\apktool\進入[C:\apktool],
  7. 執行命令:.\apktool d a.apk,會報錯不用管,完成以後會在目錄裡生成一個a的目錄.
  8. 進入a目錄,開啟裡面的AndroidManifest.xml檔案,在第一行中有類似的字串:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="23" android:compileSdkVersionCodename="6.0-2438415" package="xxx.aaa.com" platformBuildVersionCode="175" platformBuildVersionName="1.12.1">

package:xxx.aaa.com是包名,(所以如果不指定以前的包名,也可以用此方法)

platformBuildVersionCode:175就是這篇文章要找的【應用版本號】。

platformBuildVersionName:1.12.1是【應用版本號】,這個一般在manifest.json中就能找到,語義化的版本名稱,不影響apk安裝,主要用於程式檢測版本升級。

找到【應用版本號】為175,接下來,在manifest.json填一個更大一些的數,比如176,雲端打包一次。
然後再清空【應用版本號】,以後打包就會自動遞增了。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章