1

私は最近、Android で最初に署名してから apkを zipalignする必要がある理由を自問しました。これらのプロセスが技術的にどのように詳細に機能しているか、いくつかの背景情報を検索しました。私はまだ少し不満です.なぜなら、これらの説明は、なぜこのシーケンスが必要なのかを技術的に説明していないからです.

しかし、最初から始めましょう:

apk-build-process では次の順序が必要であることを知っています

  1. 多くの前のステップ...
  2. apk ファイルの作成
  3. apk ファイルに署名する (apk を変更する)
  4. apk ファイルのzipaligning (apk の変更)

ここでいくつかの情報を見つけました:
zipalign

そのため、zipalign が内部を 4 バイト境界に揃えて、すべてを mmap でロードできることは明らかです。Signing- プロセスがこのアラインメントを破壊するようです。したがって、署名後のプロセスの最後に zipaligning を呼び出す必要があります。

しかし、apk の署名を破壊することなく、apk-content を再調整できるのはなぜですか!?
apk が変更され、変更された apk の後に署名が有効になるはずがないと思いました...

誰かが私がここで見つけたよりも技術的な背景情報を持っているかもしれません:
Signing your application

ありがとう、誰かが役に立つ、より技術的に詳細な情報を持っていれば。
ルーク

4

1 に答える 1

1

APK のデジタル署名は、APK コンポーネントをハッシュすることによって実行されます。そのため、メモリ内の位置ではなく、個々のファイルの内容を保護しています。つまり、APK のコンテンツは署名されていますが、単一のファイルとしての APK 自体は署名されていません。あなたが正しく述べているように、zipalign は APK 内のファイルをパディングするだけなので、アラインされた境界で開始し、mmap(2) をより効率的に (そしてファイルを簡単に破棄できるように) します。ただし、内容は変わらないので署名違反にはなりません。

于 2015-01-27T00:51:21.640 に答える