APKとは?
状態:-
閲覧数:1,602
投稿日:2018-08-14
更新日:2018-09-04
表記
Android application package の略
片仮名
・エーピーケー
Googleによって開発されたAndroid専用ソフトウェアパッケージのファイルフォーマット
JARファイルをベースとしたZIP形式で、アーカイブファイルの一種
・プログラムソース・画像・マニフェストファイル・デジタル署名などが含まれている
Androidアプリを公開するために必要なファイル
・Android専用のインストール形式ファイル。Windowsで言えばexeファイルのようなもの
・このファイルでアプリを実行(Android端末にアプリをインストール)することが可能になる
APKファイルを作成するには?
Android用に作成したプログラムをコンパイルして、その全てを一つのパッケージに統合させる
・内部にはプログラムソース、デジタル証明書、マニフェストファイルなどが格納されている
※ファイル名は任意だが、拡張子を「.apk」にしなければいけない
APKファイルの具体的な作成方法
1.Android Studio で対象プロジェクトを開く
2.下記何れかを実行
・画面上部タブから[Build]→[Build APK]をクリック
・画面上部タブから[Build]→[Generate Signed APK…]をクリック
勘違いしやすい点
大原則
Android Studioでアプリを作成してビルドすれば、apkファイルは作成(ファイルとして出力)される
アプリをビルドして実行してもAPKファイルを確認出来ないケース
スマホ実機やエミュレーターでデバッグするとき
・1.「PC」と「スマホ実機」を接続後、Android Studio の [Run] をクリック
・2.Android Studioでアプリを作成してビルドしたので、apkファイルは作成(ファイルとして出力)される
・3.Android Studio が作成したデバッグ用の APK は、ターゲット端末へデプロイされる(作成されたapkファイルは、スマホ実機へ 転送されて 実行されている)
・そのため、転送元の「PC」では、(別途作成しない限り)APKファイルを確認出来ない
出力例
app\build\outputsディレクトリ内に作成される
出力先
・AndroidStudioProjects\<プロジェクト名>\app\build\outputs\apk\<ビルドタイプ>\
具体例
・L:\Android\copysamplecode\firstkaitei\chapter05\Tyrano20180611\app\build\outputs\apk\debug
apkファイルの実体は単なるzip形式
(拡張子をzipに変えるだけで、)zipファイルとして解凍処理できる
・但し、単純にその中にソースファイルが格納されているわけではなく、dexと呼ばれるAndroid専用の仮想マシン上で実行できる形式に変換されたファイルが入っている
・dexファイルをリバースエンジニアリングすることでJavaソースコードを閲覧することは可能だが、コンパイルの過程で「難読化」処理が施されている場合は学習材料とすることは難しい
apkファイルの解凍例1
┏assets/
┣META-INF/
┣res/
┣AndroidManifest.xml
┣classes.dex
┗resources.arsc
┣META-INF/
┣res/
┣AndroidManifest.xml
┣classes.dex
┗resources.arsc
▼classes.dex
dex
038 $?ハ^?9?ヘ*DG?c(~??AD p xV4 h *N p ・ 9 v フX Q& T・ ?< ワ 8 \ 鑒 \? § ħ ǧ է ܧ ? .? 6? S? o? ? ?? ?? ?? ( Ϩ ・ ? ? *? A? X? e? p? ?? ?? ?? ɩ ܩ ?? ? ?
//以下略
dexからJavaソースコードを得る方法
・apkファイルからJavaのソースコードを抽出する
・Android?の「***.apk」形式ファイルについて教えて下さい
APKファイルを、Android端末へインストールする方法
3種類
APKファイル
・PCにソフトウェアをインストールする操作と同じように決まった手順でAndroid端末にインストール
1.Google Play
・Google Playといった正式な頒布元からインストール
2.非公式のウェブサイトからダウンロード
・非公式のAPKをインストールするには、ほとんどの場合「設定」→「セキュリティ」→「提供元不明のアプリ」でインストールを許可する設定を行えばよい
3.PCからadbコマンドを用いるなどして、端末に直接インストールする
APKファイル内部の基本設計
APKファイル内の構成
┏META-INF/
┃・ディレクトリ
┃
┣res/
┃・resources.arscにコンパイルしたコードを含むディレクトリ
┃
┣assets/
┃・resフォルダに入れられないファイルが入るディレクトリ
┃・ZIPファイルやテキストファイル、バイナリファイルなど
┃
┣AndroidManifest.xml
┃・別のマニフェストファイル、アプリケーションのタイトル、バージョン情報、アクセス権限、ライブラリファイルなどをバイナリXMLに変換したファイル
┃
┣classes.dex
┃・Dalvik仮想マシンでコンパイルされたdexファイル
┃
┗resources.arsc
・バイナリXMLなど、プリコンパイルされたファイル
・APK (ファイル形式)