ja.wikipedia.org

APK (ファイル形式) - Wikipedia

この記事は検証可能参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。このテンプレートの使い方
出典検索?"APK" ファイル形式 – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL
(2017年9月)

APK
拡張子.apk, .xapk, .apks, .apkm
MIMEタイプapplication/vnd.android.package-archive
開発者Google
包含物モバイルアプリケーション
派生元JARZIP

APK: Android Application Package、アンドロイドアプリケーションパッケージ、エーピーケー)とは、Googleによって開発されたAndroid専用ソフトウェアパッケージファイルフォーマットである。Android Packageとも[1][2]

JARファイルをベースとしたZIP形式で、アーカイブファイルの一種である。

概要

[編集]

APKファイルは、UbuntuDebianなどのオペレーティングシステムで使われるDEBファイルや、Windowsのインストーラーで使われるMSIファイルと特徴が似ている。 APKファイルを作成するには、Android用に作成したプログラムコンパイルして、その全てを一つのパッケージに統合させる。内部には仮想マシン用の実行可能ファイル、デジタル証明書、マニフェストファイルなどが格納されている。C言語などによるネイティブコードを利用するアプリケーションNDKを用いて開発されたアプリケーション)の場合、プロセッサ (CPU) アーキテクチャごとの共有ライブラリ (.so) も含まれる。その他のファイル形式と同様に、拡張子を「.apk」にしなければいけない点を除き、名前を自由に付けることができる[3][4][5][6]

インストール

[編集]

APKファイルは、PCにソフトウェアをインストールする操作と同じように、決まった手順でAndroid端末にインストールできる。Google Playキャリア(携帯電話会社)のアプリストアといった正式な頒布元からインストールすることを始めとして、他にも非公式のウェブサイトからダウンロードするか、PCからadb (Android Debug Bridge) コマンドラインツールを用いてUSB経由で転送するなどして、端末に直接インストールする方法もある。ただし、非公式のAPKはアプリストアの審査を受けていないことから、アプリストアで配布されているものと比較して、マルウェアなどの危険なアプリである可能性が高く、利用はユーザーの自己責任となる。

セキュリティ上の理由から、Android既定の設定では、非公式のAPKを直接インストールすることはできない。非公式のAPKを直接インストールするには、Android 4.x - 7.xまでの場合、事前に「設定」→「セキュリティ」→「提供元不明のアプリ」(提供元不明のアプリのインストールを許可する)のトグルスイッチをONにして、インストールを許可するように設定すればよいが、システム全体のセキュリティレベルが低下した状態になるので注意が必要である。Android 8.0以降は、APKのダウンロードおよびインストールに使用するアプリごとにインストールの許可を設定するようになり、また表示される項目名が「不明なアプリのインストール」(この提供元のアプリを許可)に変更された。ホーム画面からアプリアイコン長押し→「アプリ情報」→「不明なアプリのインストール」または「設定」→「アプリ」→「アプリ情報」→「不明なアプリのインストール」において、「この提供元のアプリを許可」のトグルスイッチをONにする。

構成

[編集]

APKファイル内部の基本設計は以下の通りである。

  • META-INF: ディレクトリ
    • MANIFEST.MF: マニフェストファイル
    • CERT.RSA: アプリケーションのアクセス権限リスト
    • CERT.SF: MANIFEST.MF対応のSHA-1
 Signature-Version: 1.0
 Created-By: 1.0 (Android)
 SHA1-Digest-Manifest: wxqnEAI0UA5nO5QJ8CGMwjkGGWE=
 ...
 Name: res/layout/exchange_component_back_bottom.xml
 SHA1-Digest: eACjMjESj7Zkf0cBFTZ0nqWrt7w=
 ...
 Name: res/drawable-hdpi/icon.png
 SHA1-Digest: DGEqylP8W0n0iV/ZzBx3MW0WGCA=
  • lib: コンパイルされたコードが入ったディレクトリ、または他のディレクトリを複数のディレクトリに分割。
    • armeabi: ARMアーキテクチャ用にコンパイルしたコード。
    • armeabi-v7a: ARMv7用にコンパイルしたコード。
    • arm64-v8a: ARMv8 64ビット用にコンパイルしたコード[7]
    • x86: x86用にコンパイルしたコード。
    • x86_64: x86-64 (x64) 用にコンパイルしたコード。
    • mips: MIPS用にコンパイルしたコード。
  • res: resources.arscにコンパイルしたコードを含むディレクトリ。
  • assets: resフォルダに入れられないファイルが入るディレクトリ。(ZIPファイルやテキストファイル、バイナリファイルなど)
  • AndroidManifest.xml: 別のマニフェストファイル、アプリケーションのタイトルバージョン情報、アクセス権限、ライブラリファイルなどをバイナリXMLに変換したファイル。
  • classes.dex: Javaクラスファイルからコマンドラインツール dx によりコンパイルされたファイル。Dalvik仮想マシンあるいはAndroid Runtimeで実行される。
  • resources.arsc: バイナリXMLなど、プリコンパイルされたファイル。

APK拡張ファイル

[編集]

Google Playではユーザーによってダウンロードされる各APKファイルのサイズ上限が100MBまでと定められている。100MBを超えるデータを配布する場合、APK拡張ファイルを利用する方法がある。APK拡張ファイルは任意のフォーマットを利用できるが、暗号化に対応したopaque binary blob (obb) と呼ばれる独自フォーマットに変換するツール jobb も用意されている[8][9]。拡張ファイルの分類は main と patch に分かれており、ファイル名は特定の命名規則に従う必要がある。各拡張ファイルのサイズ上限は2GBである。

Multiple APK

[編集]

通例、APKには複数の画面解像度と密度、複数のCPUアーキテクチャといった、デバイス構成に合わせた複数のファイルをすべて含めて1パッケージとするが、これはアプリパッケージが肥大化し、ユーザーがダウンロードしなければならないファイルサイズが増大する要因となる。Google Playでは個々のデバイス構成に合わせて別々のAPKファイルを用意し、ユーザーのダウンロードサイズを削減しつつ、1つの製品として管理するための仕組みとして、Multiple APKがサポートされている[10][11]。ただしMultiple APKでは個別にパッケージ作成と署名が必要となり手間がかかるため、代替として後述するAndroid App Bundleの利用が推奨されている。

Android App Bundle

[編集]

ユーザーがダウンロードする必要のあるAPKファイルのサイズを削減するために、新しいアップロードフォーマットとしてAndroid App Bundle (aab) が考案された[12][13][14][15]。Playコンソールでaabをアップロードすると、Google Playがユーザーの実行環境に合わせて最適なAPKファイルを生成する (Dynamic Delivery)。aabを使用して公開されているアプリの場合、APKファイルのダウンロードサイズ上限は150MBとなる。なお、Android App BundleはAPK拡張ファイル (obb) をサポートしない。

2021年の下半期には、App Bundleの使用が必須となり、APK拡張ファイルのサポートが終了する予定となっている[16]。大容量アセットの配信には、代替としてPlay Asset Delivery (PAD) を使用することが推奨されている。

脚注

[編集]

  1. ^ アプリの基礎 | Android デベロッパー | Android Developers
  2. ^ Application Fundamentals | Android Developers
  3. ^ Inside the Android Application Framework
  4. ^ Tips: How to install apk files on Android Emulator
  5. ^ The Structure of Android Package (APK) Files
  6. ^ Learn to Fish: General Structure of an APK
  7. ^ ABI Management | Android Developers”. developer.android.com. 2016年3月30日閲覧。
  8. ^ APK 拡張ファイル | Android デベロッパー | Android Developers
  9. ^ APK Expansion Files | Android Developers
  10. ^ 複数 APK サポート | Android デベロッパー | Android Developers
  11. ^ Multiple APK support | Android Developers
  12. ^ Android App Bundle について | Android デベロッパー | Android Developers
  13. ^ About Android App Bundles | Android Developers
  14. ^ アプリのサイズを削減 | Android Developers
  15. ^ Reduce your app size | Android Developers
  16. ^ Google Developers Japan: 最近の Android App Bundle の改善と新規アプリのスケジュール

関連項目

[編集]

Alphabet歴史サービス
企業
イベント・取り組み
人物
役員
創業者
部門
不動産
開発
オペレーティングシステム
ライブラリ・
フレームワーク
ツール
探索アルゴリズム
ファイルフォーマット
その他
サービス
娯楽
伝達・交流
検索
組織・管理
ビジネス・金融
その他
ハードウェア
Nexus
スマートフォン
タブレット
その他
Google Pixel
Google Play Edition
Android One
その他
X