コンテンツにスキップ

APK (ファイル形式)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
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形式で、アーカイブファイルの一種である。Googleは、2021年12月に、2022年にAndroidゲームをWindowsに提供する計画を発表しました。[3][4][5] 9月29日、Googleはオーストラリア、香港、韓国、台湾、タイ市場でGoogle Play Games for PCの正式な試験運用を開始しました。[6][7]

概要

[編集]

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

インストール

[編集]

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ビット用にコンパイルしたコード[12]
    • 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 も用意されている[13][14]。拡張ファイルの分類は main と patch に分かれており、ファイル名は特定の命名規則に従う必要がある。各拡張ファイルのサイズ上限は2GBである。

Multiple APK

[編集]

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

Android App Bundle

[編集]

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

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

脚注

[編集]
  1. ^ アプリの基礎 | Android デベロッパー | Android Developers
  2. ^ Application Fundamentals | Android Developers
  3. ^ Google Play Games - モバイルゲームを Windows PC プラットフォームでプレイ”. play.google.com. 2024年12月15日閲覧。
  4. ^ Mod APK” (英語). ApkModay. 2024年12月15日閲覧。
  5. ^ Warren, Tom (2021年12月10日). “Google is bringing Android games to Windows in 2022” (英語). The Verge. 2024年12月15日閲覧。
  6. ^ Jovanée, Alice (2022年8月24日). “Google Play Games beta opens outside the US” (英語). The Verge. 2024年12月15日閲覧。
  7. ^ Mehta, Ivan (2022年11月3日). “Google Play Games for PC program expands to the US and seven other countries” (英語). TechCrunch. 2024年12月15日閲覧。
  8. ^ Inside the Android Application Framework
  9. ^ Tips: How to install apk files on Android Emulator
  10. ^ The Structure of Android Package (APK) Files
  11. ^ Learn to Fish: General Structure of an APK
  12. ^ ABI Management | Android Developers”. developer.android.com. 2016年3月30日閲覧。
  13. ^ APK 拡張ファイル | Android デベロッパー | Android Developers
  14. ^ APK Expansion Files | Android Developers
  15. ^ 複数 APK サポート | Android デベロッパー | Android Developers
  16. ^ Multiple APK support | Android Developers
  17. ^ Android App Bundle について | Android デベロッパー | Android Developers
  18. ^ About Android App Bundles | Android Developers
  19. ^ アプリのサイズを削減 | Android Developers
  20. ^ Reduce your app size | Android Developers
  21. ^ Google Developers Japan: 最近の Android App Bundle の改善と新規アプリのスケジュール

関連項目

[編集]