web-dev-qa-db-ja.com

app-debug.apkとapp-debug-unaligned.apkの違い

ビルドバリアントを「デバッグ」モードに設定したAndroidスタジオで、apkの2つの出力が見つかりました

  • app-debug.apk
  • app-debug-unaligned.apk

それらのファイルの違いは何ですか?

112
Khaled Saif

位置合わせされていないapkは単なる中間apkです。最初に、非整列apkが生成されます。次に、非整列apkが整列され、app-debug.apkである整列apkが生成されます。詳しくは here をご覧ください。

113
Bidhan A

短い答え:

app-debug-unaligned.apk =アライメントされていない署名付きAPK
app-debug.apk = Aligned Signed APK(RAMはzipalignを使用して最適化)


ロングアンサー

違いを理解するには、次の点を知る必要があります。

アプリ署名プロセス

  • 秘密鍵を生成します(keytool)
  • コンパイルして未署名のAPKを取得します->アライメントされていない未署名のAPK
  • 秘密キーを使用してデバッグ/リリースモードでアプリに署名する(jarsigner)->アライメントされていない署名済みAPK
  • aPKの整列(zipalign)->整列された署名済みAPK

署名プロセス全体について説明します ここ

中間のapp-debug-unaligned.apkが必要なのはなぜですか?

docs に従って:

Caution: zipalignのみを実行する必要がありますafter .apkファイルは秘密鍵で署名されています。署名する前にzipalignを実行すると、署名手順により位置合わせが取り消されます。

利点は何ですか? zipalign?

利点は、整列されたAPKがRAMの使用に最適化されているため、デバイスで消費されるRAMが少なくなることです。 docs から:

zipalignは、Androidアプリケーション(.apk)ファイルに重要な最適化を提供するアーカイブ調整ツールです。 ....利点は、アプリケーションの実行時に消費されるRAMの量を減らすことです。

75
SMR