簡體   English   中英

AOSP OTA更新如何處理已安裝的系統應用程序更新?

[英]How does an AOSP OTA update deal with installed system app updates?

這適用於自定義信息亭模式設備的自定義AOSP ROM。 目前我們有一個系統,其中/ system / priv-app中的主要kiosk應用程序可以使用PackageManager下載並安裝自己更新的APK。 我們現在正在考慮實施OTA更新,以便我們可以實際更新操作系統的其余部分。 我的問題是如果我們使用這兩種類型的更新會發生什么? 即,自助服務終端模式應用程序下載自身的新更新並將更新的APK安裝到數據分區,然后我們發布具有更新版本的應用程序的OTA更新。 Android會自動從/ ​​data刪除舊更新並恢復到/ system / priv-app中現在更新的版本嗎? 此外,如果OTA更新具有更新的應用程序但仍然比安裝的最新更新更舊,會發生什么?

不專門使用OTA更新的原因是我們的某些舊設備無法使用OTA進行更新,因此我們只是推送應用程序更新,因此理想情況下,我們可以繼續為所有設備執行相同的過程,然后為此推送額外的OTA更新需要時更新的設備。

在這種情況下,PackageManagerService通過比較版本代碼來查找更好的版本。 在OTA更新后,如果您的system / priv-app的版本高於數據/應用程序版本,則system / priv-app將優先使用。

代碼參考: http//aosp.opersys.com/xref/android-8.0.0_r36/xref/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java#8887

代碼段:

if (pkg.mVersionCode <= ps.versionCode) {
    // The system package has been updated and the code path does not match
    // Ignore entry. Skip it.
    if (DEBUG_INSTALL) Slog.i(TAG, "Package " + ps.name + " at " + scanFile
        + " ignored: updated version " + ps.versionCode
        + " better than this " + pkg.mVersionCode);
    if (!updatedPkg.codePath.equals(scanFile)) {
        Slog.w(PackageManagerService.TAG, "Code path for hidden system pkg "
            + ps.name + " changing from " + updatedPkg.codePathString
            + " to " + scanFile);
        updatedPkg.codePath = scanFile;
        updatedPkg.codePathString = scanFile.toString();
        updatedPkg.resourcePath = scanFile;
        updatedPkg.resourcePathString = scanFile.toString();
    }
    updatedPkg.pkg = pkg;
    updatedPkg.versionCode = pkg.mVersionCode;
    ..........................................
    ..........................................
}

檢查並發現如上所述的工作。

答案似乎是,即使OTA更新將APK更新為較新版本,PackageManager仍然將原始版本號緩存在某處,因此認為/system/priv-app上的版本是舊版本。 我沒有機會進一步研究它,但似乎安裝到/data任何更新將始終優先,但僅因為PackageManager無法識別/system/priv-app版本已被更新OTA更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM