2013-04-26 165 views
2

我們已經安裝了Android應用程序1.0,並將其製作在專用ROM的/ system/app中。如何升級/系統/應用程序中的應用程序?

現在我們已經發布該應用的升級版本1.1,安裝後,版本在Android設置的應用列表中更改爲1.1。但是當我重新啓動系統時,錯過了更新後的版本,返回1.0。

如何解決此問題?有關它的任何詳細介紹?

謝謝。

回答

-2

也許你有你的應用程序安裝到/ data/app中不是/ system/app中

嘗試將此應用移動到/ system/app中

+0

如何移動它?我用adb install來安裝它 – brucenan 2013-04-26 08:37:23

1

,因爲應用程序是在系統/應用程序,所以,你應該使用推送命令

adb root 
adb remount 
adb shell rm /system/app/your.apk 
adb push your.apk /system/app 

更新它。

也許你需要先刪除它。

通常,如果您將應用程序推送到系統/應用程序,然後將其安裝到數據/應用程序中,則應用程序系統/應用程序僅在重新啓動設備後才起作用。 如果您可以在重新啓動設備後檢查數據/應用程序中是否有應用程序。

adb shell ls /data/app 

,如果你找到它,你可以刪除它,以確保您不具有相同的應用程序:

adb shell rm /data/app/your-1.apk 
+0

其實我用adb push來安裝它 – brucenan 2013-04-26 08:36:50

+0

該應用程序有自動更新功能,所以我不能先刪除它。我們使用pm -r xx.apk替換安裝所有下載的新應用程序版本。 – brucenan 2013-04-26 08:41:44

+0

我不知道pm命令是什麼。但我可以確保adb install -r只能暫時替換應用程序。你必須使用adb shell rm和adb push來更新系統/應用程序中的應用程序 – buptcoder 2013-04-26 08:46:55

2

您可以使用此:
亞行外殼

安裝-o remount,rw/system
cat ApplicationName.apk> /system/app/ApplicationName.apk
chmod 644 ApplicationName.apk
重新啓動

據我所知pm安裝只更新用戶應用程序。 如果您正在從Eclipse或從其他IDE部署應用程序(就我所知,與下載安裝相同),該應用程序將位於data/app下。

的應用程序現在的位置是/data/app/com.package.name-1.apk

的部署,你可以做
亞行外殼

安裝鄰重新裝載,RW /系統後
貓/data/app/com.package.name-1.apk> /system/app/ApplicationName.apk
搭配chmod 644 /system/app/ApplicationName.apk
重新啓動,以使更改生效

Cat通常與複製或cp相同,但是當您從/ data/app /原始com.package.name-1中捕獲時。APK消失(我猜機器人自動處理這個不知何故)

您可以通過執行LS -al當在/數據/應用程序/文件夾

0

增加versionCode更新您的應用程序之前進行測試。

實際上,最新版本的應用安裝在/ data/app中,當設備重新啓動時,設備將檢查舊應用(v1.0)是否應該更新。然而,根據scanPackageLI()的框架/基/服務/ JAVA/COM /安卓/服務器/ PackageManagerService.java

if (ps != null && !ps.codePath.equals(scanFile)) { 
    // The path has changed from what was last scanned... check the 
    // version of the new path against what we have stored to determine 
    // what to do. 
    if (pkg.mVersionCode < ps.versionCode) { 
     // The system package has been updated and the code path does not match 
     // Ignore entry. Skip it. 
     ...... 
    } else { 
     ...... 
    } 
    ...... 
} 

你可以找到,如果的versionCode是一樣的,舊的應用程序將不會更新。所以當你想更新舊應用程序時,你需要在你的應用程序中增加versionCode。 PS:用新的命令行替換舊的應用程序可以滿足你的需求,但我真的不認爲它是好的。

+0

+1我不知道爲什麼這個答案是downvoted,但它是帶領提問者走向正確的方向。如果安裝在/ system/app中的應用程序已更新,則它將具有ApplicationInfo.FLAG_UPDATED_SYSTEM_APP,但是如果您有兩個apks,一個在/ system/app中,另一個在/ data/app中,並且它們具有相同的版本代碼,或者in/data/app版本號較低,Android會自動刪除/ data/app中的apk – Ben 2016-06-05 22:04:04