サイトアイコン 【TechGrowUp】

apk、aab、obbとは何か、何が違うの? アプリ署名って何?

apk,aab,obb,署名についてのアイキャッチ

はじめに

 本記事では、Androidアプリ開発における重要な知識として、apk,aab,obbファイルの概要について説明します。また、Google Play配布時における注意点や、ビルド方法についても説明しています。

apkとは 

 apkとは「Android Application Package」の略称で、.apkの拡張子を持ち、Androidスマホや端末にアプリとしてインストールできるファイルのことです。分かりやすい例でいうと、Windowsだとソフトをインストールする時に、.exeファイルというものをインストールすると思います。.apkファイルも同様にAndroid内でアプリケーションをインストールするためのものです。
 apkの中身としてはzip形式のファイルのようなもので、apkを開くと中にアプリケーションを構築するためのファイルなどが格納されています。一般的にはGoogle Playで配布されていることが多く、ユーザーがGoogle Playからapkファイルをダウンロードし、インストールしています。一方あまり知られていはいないですが、Google Driveのようなファイル管理ツールでも、apkをインストールすることも可能です。

apkとはAndroidスマホにアプリをインストールするためのファイル

aabとは

 aabとは「Android App Bundle」の略称で、.aabの拡張子を持ち、多種多様なAndroid端末にapkを配布できるようにしたパッケージの形です。昨今では端末メーカも様々なAndroid端末を出しており、apkファイルをそれぞれの端末に合わせて作っていくのは骨が折れる作業になってしまうので、Googleが「aabの場合は、Google Playで端末に合わせて最適なapkを提供するよ」ということをしてくれます。
 aabファイルのメリットとしては下記があげられます。

aabとは多様なAndroidスマホに最適化したapkファイルを作ってくれる、apkの進化版パッケージファイル

obbとは

 obbとは、「Opaque Binary Blob」の略称で、apkファイルを拡張するためのものです。Google Playではapkの場合は100MB、aabの場合は150MB以下のサイズにしないとユーザーへアプリを配布できません。大抵のTwitter,Facebook,Lineなどのアプリでは大きなサイズにならないため気にする必要はありません。一方ゲームやARアプリなど、アプリ単体で大きな容量が必要になるアプリはそのまま配布することは出来ません。このような場合に上限2GBまでのファイルをobbファイルとしてGoogle Playに添付することが出来ます。
 ※ちなみに以前にはGoogle Playからアプリをダウンロードした後、ユーザーはアプリ内で「追加コンテンツをダウンロード」のような、せっかくアプリをダウンロードしたのに追加コンテンツのダウンロードに時間がかかるといった、操作性の悪い状況が起こっていました。obbはこれを解消したものです。

 obbを活用することで、ユーザーはGoogle Playからのダウンロード時に、apkファイルと同時にobbファイルもまとめてダウンロードすることになります。こうすることダウンロード完了と同時に、アプリを開けば必要なファイルが揃っているのですぐにアプリやゲームを始めることが可能になります。

obbはapkファイルを拡張するためのもので、ユーザーがすぐにアプリやゲームを始めることができる。


 

アプリ署名とは

 アプリ署名とは、apkファイルに対して証明書としてサインをすることです。例えばクレジットカードなどを利用する時に名前を求められることがあると思います。これは本人確認を筆跡で鑑定できるように手書き文字を証明書として代用しています。これと同様に、apkを配布するときも、そのアプリが誰のものなのか明確にする必要があります。


 実際に署名する際には、2つのパターンがあります。1つ目がAndroid Studioによって手動で署名を作成し、アプリに付与する方法です。こちらの場合には署名の管理や作成の手間はかかりますが、信頼性が最も高く自らが無くさなければ安全ということになります。


 2つ目はGoogle Play側で作成・管理を行うものです。apkファイルを一般のユーザー向けに配布する際、apkをGoogle Playにアップロードしますが、その際に署名を同時に行ってくれ、後の管理も全てGoogleに任せることが可能になります。大企業の場合ですとセキュリティ面やコンプライアンスの懸念もあるため迷う部分もあると思いますが、小規模や個人レベルであればGoogle に任せる方法が最も良い方法可と思います。

apkに署名をすることで、そのアプリの所有者を明確にする

Android Studioのビルド方法

 最後に実際にapkファイルや、aabファイルをどうやってビルドするのか説明したいと思います。apk,aabファイルを作成するにはAndroid Studioでビルドを行うことが出来ます。Android Studioタブの[Build]→[Build Bundle(s)/APK(s)]→[Build Bundle(s)] or [Build APK(s)]を選択することで、そのプロジェクト内のソースコードを、apkファイルもしくはaabファイルにビルドすることが出来ます。

apk,aabのビルド方法

 また、同様の[Build]タブから[Generate Signed Bundle/APK]を押すことで、アプリ署名の作成やビルドしたアプリに署名を付与することが可能になります。

 ちなみに作成したapk,aabファイルの中身もAndroid Studioで確認することが可能です。今回はapkファイルの中身を見てみましょう。作成されたapkファイルをAndroid Studioにドラッグアンドドロップすると下記のような画像が表示されます。

apk解析画面

 冒頭にも説明しましが、apkファイルそのものはzipファイルのようなパッケージになっているだけなので、中身を見ることが可能です。様々なファイルやフォルダがありますが、例えばAndroidManifest.xmlはアプリの設定が記載されているファイルですが、これらも実際に開くことでソースコードを見ることが可能です。


 逆に言うと、このようなAndroidManifestファイルなどのアプリ情報は一般公開されていると認識してもらえればと思います。更にclasses2.dexというファイルがあると思いますが、こちらに実際のソースコードが入っていますので、ソースコードを「難読化」という処理を行わないと、セキュリティ要素の高いソースコードまで一般の誰でも見れるようになってしまうので注意してください。
 ※難読化については、また別の記事で説明します。

まとめ

 今回はAndroidアプリ開発における、apk,aab,obb、署名とは何かについて説明しました。これらはアプリをGoogle Playやお客様に配布する際や自分の端末にインストールして確認するときなどには大事なものなので、しっかりと覚えておきましょう。

 実際にAndroidアプリを作ってみたい方は下記から始めてみてください!

モバイルバージョンを終了