2012-11-15 86 views
98

似乎最近的Android 4.2在安裝時會嘗試安裝較低版本的APK時出現此錯誤情況。在之前的Android版本中,只需通過adb install -r <link to APK>即可安裝較舊的APK。出於調試的目的,我經常需要重新測試舊的APK;並且-r標誌將替換舊版Android版本中的舊版本。有沒有辦法在這裏忽略[INSTALL_FAILED_VERSION_DOWNGRADE]有沒有什麼辦法可以忽略使用Android Debug Bridge進行應用程序安裝時的INSTALL_FAILED_VERSION_DOWNGRADE?

+0

你的意思是,除了卸載較新的版本? – CommonsWare

+0

正確;我認爲'-r'標誌可以處理這個問題。 – AaronMT

+4

這個問題也適用於你有(錯誤地)編號錯誤編號的情況。例如。也許你的v1.0版本的開發包版本比build2.0版本的版本更高。 – parkerfath

回答

232

看樣子最新版本的adb工具有一個「允許降級標誌」,adb幫助中沒有顯示,但它顯示在設備上的「pm」幫助中。所以使用: adb install -r -d <link to apk>

+1

用'adb install -rd '嘗試過,哪個都不起作用。你的versino(與選項分開)工作正常。謝謝! – MarSoft

+1

現在它似乎被記錄!只是不是你必須使用-r -d,-rd將不起作用 – plaisthos

+0

例如,要卸載(降級)Waze 4.0.0.2並安裝版本3.9.5.3:** adb install -r -d Waze_3.9.5.3 apk文件**。這樣你就不會丟失應用數據。 – derekg

13

您是否在您的設備上啓用了多個帳戶(並通過ADB推送您的apk)? 如果是這樣你必須刪除每個帳戶中的apk。完成卸載後,您的推送將會正常。

+0

通過Titanium備份還原備份不起作用。全新安裝不起作用。通過APK和/或adb安裝進行安裝不起作用。這花了我1.5小時,你的簡單提示做到了。謝謝! –

16

您可以嘗試使用adb uninstall -k <package>,然後安裝較舊的apk。 從亞洲開發銀行使用指南:

adb uninstall [-k] <package> - remove this app package from the device 
           ('-k' means keep the data and cache directories) 

我已經嘗試過自己和我的APK,它似乎對大部分數據使用(就像RawContacts一些數據沒有被保存)

+0

看起來這個命令實際上並沒有執行卸載,而只是產生一個警告。實際執行此操作的命令似乎是'adb shell pm uninstall -k '。 –

+0

這對於降級也很有用,如果adb -d仍然像我一樣抱怨。 –

1

在我的情況下,這是我的項目中包含的Google Play服務的陳舊版本。我正在使用Android Studio。我在SDK上運行了更新,並導入了更新後的庫,並且該錯誤消失了。所以我的建議是:更新到您的項目引用的最新庫。

0

您可能從版本號高於您正在使用的副本的代碼的單獨副本安裝。無論哪種情況,請卸載當前安裝的副本,或者打開設置>應用程序以確定已安裝應用程序的版本號,並在AndroidManifest中將版本代碼增加到更高。

+1

爲什麼這會降低投票率?這可能不是最好的答案,但它對於新手來說似乎是一個可行的解決方案(也許是最簡單的)。 *請*留下這樣的答案的評論,因爲它們*必不可少*不僅適用於回答者,而且適用於稍後訪問此問題的讀者。 : - | –

+0

這當然是可以做的事情。已經很明顯了。問題是詢問是否有辦法跳過這個檢查並允許降級。答案是肯定的。這個答案基本上說不。 – tasomaniac

0

我也面臨同樣的problem.It可以通過下面的步驟,其是比從設備刪除任何APK更容易被解析 -

1)運行命令「亞行logcat | grep的-i版本」關於終端

2)尋找的特定線,這將在logcat的結束時示出 -

"Downgrade detected: Update version code 5011 is older than current 9109" 

3)複製當前版本(例如9109)和如下所示將其粘貼在AndroidManifest.xml -

android:versionCode="9109" 

現在清理並重建應用程序,它應該工作正常。

相關問題