本文へ移動

APK(Androidアプリケーションパッケージ)ファイル形式

APKは、Androidアプリケーションの配布とインストールに用いられるアーカイブ形式です。実行可能なバイトコード、リソース、ネイティブライブラリ、メタデータをZIPベースのパッケージにまとめ、完全性を確保するため署名されます。

APKは、Androidプラットフォーム向けソフトウェアの配布に使用されるパッケージ化ファイルである。ファイル拡張子は.apkであり、ZIPアーカイブ形式の一種であるため、一般的なZIPツールで開くことができる。APKには、Androidシステムがアプリをインストールして実行するために必要なアプリケーションコード、リソース、メタデータが格納される。

一般的な内容と構造

APKに含まれる標準的な構成要素には、次のものがある。

  • AndroidManifest.xml — アプリケーションのコンポーネント、権限、必要な機能を宣言する。
  • classes.dex — Androidランタイム用にコンパイルされたバイトコード。もともとはDalvik向けであり、現在は一般にARTによって実行される。
  • res/およびresources.arsc — レイアウト、文字列などのコンパイル済みリソース。アプリ内で参照される画像や音声を含むリソースについては、アセットとメディアも参照。
  • lib/ — 特定のプロセッサアーキテクチャ向けにコンパイルされた任意のネイティブライブラリ。たとえばARM系についてはARMを参照。
  • META-INF/ — パッケージの検証に用いる暗号署名と証明書情報。

ビルド、署名、配布

開発者はSDKで提供されるAndroidビルドツールを使用してAPKをビルドする。APKはインストール前に、その出所を証明するため証明書でデジタル署名されなければならず、Androidシステムは未署名のパッケージを拒否する。アプリは通常、APKを端末へ配信するアプリストアを通じて配布されるが、開発者がAPKファイルを直接配布し、手動でインストールすること(サイドローディング)もできる。このパッケージ化と配信の過程は、アプリケーションソフトウェアAndroidエコシステムの利用者へ届く仕組みの一部である。

歴史、進化、派生形式

APKの概念は、プラットフォーム初期のリリース以来Androidの一部である。ランタイムは時とともにDalvikからARTへ移行したが、APKは端末側のコンテナとして残っている。Google Playでは、ダウンロードを最適化する代替の配布形式としてAndroid App Bundleなどが導入されているものの、端末は通常、インストール可能な単位としてAPKを受け取る。

セキュリティ、互換性、実用上の課題

APKは実行可能なパッケージであるため、悪意のあるコードを含む可能性がある。利用者は信頼できる提供元からのみパッケージをインストールすべきである。互換性は、宣言された機能と含まれるネイティブライブラリに左右される。単一のアプリが異なるCPU向けに複数のネイティブ版を提供したり、複数の画面サイズ向けのリソースを用意したりすることもある。開発およびリリース時には、APKの検査、署名、アラインメント、最適化を行うツールが利用できる。

正式な参照情報やツールについては、プラットフォーム提供元が公開するプラットフォーム文書および開発者向けガイドを参照する。多くの開発者や分析者は、APKを、ビルド済みAndroidアプリケーションとそのランタイムコンポーネントを表す基本的な成果物として扱っている。

形式仕様 • Dalvik/ARTバイトコード • アプリリソース • メディアリソースプロセッサアーキテクチャソフトウェア配布AndroidプラットフォームZIP形式

関連項目

著者

AlegsaOnline.com APK(Androidアプリケーションパッケージ)ファイル形式

URL: https://ja.alegsaonline.com/art/4883

共有