gpt4 book ai didi

android - AOSP OTA 更新如何处理已安装的系统应用程序更新?

转载 作者:太空狗 更新时间:2023-10-29 13:46:15 25 4
gpt4 key购买 nike

这是针对自定义信息亭模式设备的自定义 AOSP ROM。目前我们有一个系统,/system/priv-app 中的主要信息亭应用程序可以使用 PackageManager 下载并安装自身更新的 APK。我们现在正在考虑实现 OTA 更新,以便我们可以实际更新操作系统的其余部分。我的问题是如果我们同时使用这两种更新会怎样? IE。 kiosk 模式应用程序下载自己的新更新并将更新后的 APK 安装到数据分区,然后我们发布一个 OTA 更新,其中包含更新版本的应用程序。 Android 会自动从/data 中删除较旧的更新并恢复到/system/priv-app 中现在更新的版本吗?此外,如果 OTA 更新有更新的应用程序但仍然比安装的最新更新旧,会发生什么情况?

不完全使用 OTA 更新的原因是我们的一些旧设备无法使用 OTA 更新,所以我们只推送应用程序更新,因此理想情况下我们可以继续对所有设备执行相同的过程,然后推送额外的 OTA在需要时更新新设备。

最佳答案

在这种情况下,PackageManagerService 通过比较版本代码来寻找更好的版本。 OTA 更新后,如果您的 system/priv-app 版本高于 data/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

代码 fragment :

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;
..........................................
..........................................
}

已检查并发现按上述说明工作。

关于android - AOSP OTA 更新如何处理已安装的系统应用程序更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53787919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com