ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
要点
- APK(Android Package、.apk)は、Android アプリの配布・インストール用ファイル形式。
- 実体は ZIP であり、
AndroidManifest.xml(バイナリ XML)、classes.dex、res/、resources.arsc、ネイティブライブラリ(lib/<abi>/)、署名情報を内包する。 - Play ストア配布は現在 AAB(Android App Bundle)が必須だが、デバイスへ最終的にインストールされるのは依然として APK(端末ごとに最適化されたもの)。
- 署名は APK Signature Scheme v1〜v4。
apksignerで付与し、未署名 APK はインストールできない。
概要
APK は 2008 年の Android 1.0 から続くアプリ配布形式で、JAR(Java Archive)の構造を Android 向けに拡張したものとして始まった。基底は ZIP なので アーカイブ・圧縮形式の一種だが、内部に Android ランタイムが期待する固有のレイアウトを持つ点でアプリパッケージとして独立した存在になっている。
Google Play は 2021 年から新規アプリに AAB(.aab)を必須化したが、AAB は配布前段階のフォーマットであり、Play 側で端末ごとの APK(Split APK)に再パッケージされてからユーザー端末に届く。つまり「端末上の実体は今も APK」という構造は変わっていない。
内部構造
APK を unzip -l app.apk で覗くと、典型的に次のメンバが含まれる。
- AndroidManifest.xml — アプリのパーミッション、エントリポイント、最小 SDK、Activity / Service / Receiver の宣言。テキスト XML ではなくバイナリ XML(AXML)として格納されている。
- classes.dex / classes2.dex … — Java/Kotlin バイトコードを Android 用にコンパイルしたDalvik Executable。Multidex で複数になる。
- resources.arsc — リソース ID と値(文字列、寸法、カラーなど)のテーブル
- res/ — レイアウト XML、drawable、mipmap などのリソース
- assets/ — フォントや任意データなど、生のファイル
- lib/<abi>/ —
arm64-v8a、x86_64等のネイティブ.so - META-INF/ —
MANIFEST.MF、CERT.SF、CERT.RSA等の署名情報(v1 署名の場合)
AndroidManifest.xml は AAPT2 でコンパイル後、AXML としてバイナリ化される。apktool でデコードするとテキスト XML が復元され、たとえば次のような内容を確認できる。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworld">
<application android:label="Hello">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
主な用途
- Google Play 経由のアプリ配布(端末側に届く最終形は APK)
- サードパーティストア配布 — Amazon Appstore、Galaxy Store、F-Droid、Huawei AppGallery など
- サイドローディング — Web から直接
.apkをダウンロードしてインストール。「提供元不明のアプリ」設定が必要 - 社内配布(MDM/EMM) — Intune、Workspace ONE、Google Endpoint Management 経由の業務アプリ配布
- 動作確認・QA —
adb install app.apkで開発端末に直接導入
関連形式との比較
- vs AAB(.aab) — AAB は Google Play への提出形式で、Play が端末ごとに最適化された Split APK を生成して配信する。AAB 単体ではインストールできない。
- vs IPA — IPA は iOS 用、APK は Android 用。どちらも ZIP ベースだが、配布制限や署名スキーム、リサインポリシーが大きく異なる。
- vs EXE / MSI — APK はモバイル OS のサンドボックスを前提とした宣言的パーミッションモデル。EXE/MSI はデスクトップ OS 上で広い権限を持ち得る。
- vs ZIP — APK は ZIP として展開できるが、最終的に署名検証されることを前提に作られている点が異なる。
コマンド・ツール
adb install app.apk— 接続中の端末/エミュレータへインストールadb install -r app.apk— 既存を上書き再インストール(署名一致が必要)adb shell pm list packages— インストール済みパッケージ一覧aapt2 dump badging app.apk— パッケージ名・バージョン・パーミッション等の確認apksigner sign --ks key.jks app.apk— APK Signature Scheme v2/v3/v4 で署名apksigner verify -v app.apk— 署名検証zipalign -v 4 unsigned.apk aligned.apk— 4 バイト整列(v2 署名前に必要)apktool d app.apk/apktool b dir— 逆コンパイル / 再パック(解析・ローカライズなど)bundletool build-apks --bundle=app.aab --output=app.apks— AAB から Split APK セットを生成
注意点
- 署名の鍵を絶対に失わない。Play Console での更新は同じ鍵での署名が必須。Play App Signing に登録していれば Google 側が保持してくれるが、登録していない場合は鍵紛失 = アプリ更新不能になる。
- v1 のみの署名は脆弱。Android 7.0 以降の v2 以上を併用すること。
apksignerは--v1-signing-enabled/--v2-signing-enabledなどで個別に制御できる。 - サイドロード APK の出所には十分注意。野良 APK は不正アプリの主要な経路で、EXE 同様にマルウェアになり得る。
- パーミッションは AndroidManifest で宣言済みのものしか使えない。実行時パーミッション(位置情報、カメラなど)はランタイムで再度ユーザー承認が必要。
- 64bit ABI 必須(Google Play では 64bit ライブラリ同梱が必須)。
arm64-v8aを欠かすと配布拒否される。 - クロスサイトナビ禁止のため、本記事から外部サイトの解析記事には直接リンクしない。
関連リンク
- 実行ファイル・パッケージ(親カテゴリ)
- ファイル拡張子とは(概論)
- IPA(.ipa)(iOS の対応形式)
- アーカイブ・圧縮形式(APK は ZIP ベース)
- EXE(.exe) / MSI(.msi)(Windows 側のインストーラ)
- DEB / RPM(Linux 側のパッケージ)
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- UE5 の Lumen とは|リアルタイムGIの仕組みと有効化手順 NEW 2026-08-03 07:45:20
- UE5 の Lumen が暗い・反射しない|原因と確認ポイント NEW 2026-08-03 07:45:20
- UE5 のライトの種類と使い分け|Directional/Point/Spot/Rect NEW 2026-08-03 07:45:20
- UE5 の Nanite とは|有効化手順と対応条件を解説 NEW 2026-08-03 07:45:20
- UE5 の Nanite が効かない|原因と対処の切り分け NEW 2026-08-03 07:45:20
- UE5 の Nanite と LOD の違い|使い分けの指針 NEW 2026-08-03 07:45:20
- UE5 のマテリアルとマテリアルインスタンス|違いと使い分け NEW 2026-08-03 07:45:20
- UE5 のマテリアルノード|Lerp・Fresnel・Panner NEW 2026-08-03 07:45:20
- UE5 のマテリアルブレンドモード|Two Sided と選び方 NEW 2026-08-03 07:45:20
- UE5 の Enhanced Input 入門|IAとIMCの基本 NEW 2026-08-03 07:45:20
- UE5 の Enhanced Input 実装手順|BPでキー入力 NEW 2026-08-03 07:45:20
- UE5 の旧入力から Enhanced Input へ移行する手順 NEW 2026-08-03 07:45:20
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 2026-06-22 12:19:10
コメントを削除してもよろしいでしょうか?