我们为机顶盒管理我们自己的基于 AOSP 的固件。
当我们使用更新版本的系统应用程序创建新的 OTA 固件时。较新版本的系统应用程序不会覆盖安装在 /data 中的旧版本。
是否有任何安装后脚本或其他方法来执行此操作?
我们为机顶盒管理我们自己的基于 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”文件中找到。因此,您可以检查是否是问题所在。