繁体   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