修改系统应用程序:需要原始AndroidManifest.xml,但为什么?

时间:2013-01-27 01:01:59

标签: android apk code-signing meta-inf

编辑系统APK的基本步骤:

  1. 备份APK。
  2. 反编译工作APK。
  3. 进行更改。
  4. 重新编译工作APK。
  5. 复制/粘贴两者 META-INF文件夹和AndroidManifest.xml 备份APK(从未反编译)到重新编译的工作APK。完成!
  6. META-INF包含签名:这是有道理的。 但是,AndroidManifest.xml保留原始签名的目的是什么? 我自己测试了这个并且Android不会使用重新编译的AndroidManifest.xml加载APK(即不是原始的AndroidManifest.xml)。

    许多指南都说明了将META-INF和AndroidManfest.xml从原始APK复制到modded APK的必要性。

    我发现最接近的答案是重新编译会破坏AndroidManifest.xml(请参阅http://rootzwiki.com/topic/268-guide-newbies-how-to-port-themes/),但我比较了原始和重新编译后的AndroidManifest.XML,它们是相同的(WinMerge说它们相同MD5和SHA1哈希)。另一个人(http://miuiandroid.com/community/threads/q-remove-miui-torch-app.16013/)推测META-INF和AndroidManifest.xml在某种程度上相互联系。

    每个人都这样做,但有人知道为什么吗?

1 个答案:

答案 0 :(得分:1)

在验证系统APK时,Android会检查APK中文件子集的签名,以确保它们未被篡改。这些文件包括AndroidManifest.xmlclasses.dex和其他文件。如果原始文件的SHA-1摘要(存储在META-INF/MANIFEST.MFMETA-INF/CERT.SF中)与修改后的APK中的文件的摘要不匹配,则Android将拒绝加载APK。