首页 文章

为什么在签名过程后进行zipaligning?

提问于
浏览
1

我最近问自己为什么在android我们必须 first signthen zipalign 这个apk . 我搜索了一些背景信息,这些过程在技术上是如何工作的 . 我仍然有点不高兴,因为那些描述并没有真正从技术上解释为什么这个序列是必要的 .

但是让我们从头开始:

我知道在apk-build-process中遵循以下顺序是必要的

  • 以前的很多步骤......

  • 创建apk文件

  • signing apk文件(修改apk)

  • zipaligning apk文件(修改apk)

我在这里找到了一些信息:
zipalign

所以很明显zipalign会将内部对齐到4字节边界,这样所有都可以用mmap加载 . 似乎签名过程会破坏这种对齐 . 因此,签名后必须在流程结束时调用zipaligning .

But why is it possible to make a re-aligning of the apk-content, without destroying the signature of the apk!?
apk被修改,签名应该在修改后的apk后无效,我想......

也许有人比我在这里找到的更具技术背景信息:
Signing your application

谢谢,如果有人有一些有用的,技术更详细的信息 .
卢克

1 回答

  • 1

    APK的数字签名是通过散列APK组件来执行的 . 因此,您正在保护单个文件的内容,而不是它们在内存中的位置 . 换句话说,APK内容已签名,但APK本身不是单个文件 . 正确地说,zipalign只是填充APK中的文件,因此它们从对齐的边界开始,更有效地mmap(2)(并且能够轻松地丢弃文件) . 但是,内容不会改变,因此不会违反签名 .

相关问题