繁体   English   中英

在系统上重新启动system.img

[英]Resigning system.img on a device

我正在为我们部署到客户的设备(LG p509 - Optimus 1)开发自动应用更新解决方案。 我们控制了这些设备,并且当前在它们上安装了一个自定义内核(但不是完整的自定义ROM)。 由于我们正在尝试在设备上自动更新我们的应用程序,因此我们需要使用我们控制的密钥对系统进行签名,以便我们可以使用相同的密钥对应用程序进行签名(以获得INSTALL_PACKAGES权限)。
我在设备上运行AOSP构建时遇到了一些问题(使用LG发布的设备源代码),我正试图退后一步并评估我们的选项。 我有几个问题:

  1. 是否可以将system.img从电话中取出并重新签名内容? 如果是这样,系统apk位于何处? 我浏览了PackageManager源代码,它使用了一个系统包(看似称为“android”)来比较应用程序,看看是否允许它们拥有系统权限。
  2. 有没有人在这里为设备创建了一个自定义ROM,可以提供一些关于如何让我们的签名成为系统签名的建议?

任何见解将不胜感激。

好的,我们弄清楚了。 我不打算详细介绍(写得太多),但这里是任何偶然发现这个问题的人的基本要点:

如果要更改系统签名的密钥,则需要执行以下步骤:

  • 从正在运行的手机中提取/system/ dir
  • 检查.apk文件(来自/system/app/system/framework )以确定哪些文件由与framework-res.apk相同的密钥framework-res.apk 我使用了此处链接的脚本的修改版本来确定要签署的APK。
  • 如果与/system/app framework-res.apk共享签名密钥的/system/app的APK被索引,则需要对它们进行去索引
  • framework-res.apk APK和framework-res.apk并将它们打包在update.zip (谷歌如何做到这一点)。

在我的特定设备,我不得不辞职既/system/framework/framework-res.apk/system/framework/lge-res.apk/system/framework ,也不得不去ODEX并签署20个.apks/system/app文件夹,以使一切顺利运行。

“system apk”是/system/framework/framework.jar 我从来没有尝试重新签署系统映像,但我编写的代码是系统映像的一部分(不在普通的apk项目中),它成为了这个jar的一部分。 此目录中还有其他罐子,可能还需要重新签名。

签名是随机创建的,并放置在构建环境中的两个文件中,即build/target/product/security/platform.pk8build/target/product/security/platform.x509.pem 我不知道如何从普通的密钥库中提取这些内容,但是我已经能够将它们从一个固件版本复制到另一个固件版本,以确保两个图像具有相同的平台密钥。 此外,我已经能够使用此命令更改APK的签名: java -jar signapk.jar platform.x509.pem platform.pk8 Old.apk New.apk 你会在你的构建中找到signapk.jar,在out/host/linux-x86/framework/signapk.jar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM