1

尝试构建一个用于更新从源代码构建的 android OS 的应用程序。即使在使用平台密钥对应用程序进行签名后,该方法RecoverySystem.installPackage(context,file)在应用于放置在“/data/cache”中的更新文件时也会出现错误,即应用程序不允许写入 /cache。此外,尝试访问 /cache 分区时会引发 SElinux 错误。

该应用程序拥有必要的权限android.permission.RECOVERYandroid.permission.REBOOT并且android.permission.ACCESS_CACHE_FILESYSTEM

浏览源代码,这些行

...
FileWriter uncryptFile = new FileWriter(UNCRYPT_PACKAGE_FILE);
try {
    uncryptFile.write(filename + "\n");
} finally {
    uncryptFile.close();
}
...

在 RecoverySystem.installPackage() 触发错误。(http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/java/android/os/RecoverySystem.java#562

即使显示错误,设备仍会重新启动以应用更新,但恢复显示“无命令”屏幕很可能是因为没有命令写入 /cache/recovery

操作系统构建是用户构建,因此没有植根。

我错过了什么吗?平台签名的应用程序是否有其他方法可以为用户构建安装固件更新?

类似:Android开发RecoverySystem.installPackage() 无法写入/cache/recovery/command 权限被拒绝

4

0 回答 0