[英]AOSP OTA - Updating system apps with newer version does not override previously installed, older apk updates
我们为机顶盒管理我们自己的基于 AOSP 的固件。
当我们使用更新版本的系统应用程序创建新的 OTA 固件时。 较新版本的系统应用程序不会覆盖 /data 中安装的旧版本。
是否有任何安装后脚本或其他方法来强制执行此操作?
请确保较新版本的系统应用程序具有比旧的现有版本代码更高的版本代码。
PackageManagerService 通过比较版本代码来寻找更好的版本。 OTA更新后,如果您的system/priv-app版本高于data/app版本,则system/priv-app优先。
PackageManagerService 的 Android 源代码有以下几行:
mIsUpgrade = !Build.FINGERPRINT.equals(ver.fingerprint);
... some other code
if (mIsUpgrade && !onlyCore) {
Slog.i(TAG, "Build fingerprint changed; clearing code caches");
... cache clearing logic
ver.fingerprint = Build.FINGERPRINT;
}
也就是说,如果构建指纹被更改,代码缓存将被清除。 未清除缓存意味着您的应用程序的包信息看起来相同(版本信息、标志等)。
出现此问题的原因可能是您的 OTA 软件包与安装它的系统具有相同的指纹。
检查您的 makefile 并确保您为每个构建生成唯一的指纹。
指纹值可以在“system/buildprops”文件中找到。 所以你可以检查这是否是问题所在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.