APKとOBBファイルからXAPKファイルを作成する方法
はじめに
この記事では、XAPKファイルの作り方について説明します。
XAPKファイルは、Androidアプリのパッケージファイルの一種です。一般的に使われているAPKファイルにはファイルサイズの制限があるため、ゲームなどではAPKファイルとは別にOBBファイルを用意して、アプリのデータを格納することがあります。XAPKファイルは、APKファイルとOBBファイルを1つにまとめたものです。
XAPKファイルを作成することで、Androidアプリを自由に配布・インストールできます。
XAPKファイルを作成するには、AndroidアプリのソースコードをAndroid Studioなどの開発環境でビルドする必要はありません。必要なファイルをそろえて、いくつかの手順を実行するだけでXAPKファイルが完成します。
必要なもの
XAPKファイルを作るには、アプリのAPKファイルとOBBファイルが必要です。APKファイルは、Androidアプリのパッケージファイルです。OBBファイルは、APKファイルとは別に用意されている、アプリのデータを格納するファイルです。
APKファイルの入手方法
APKファイルは、Androidの実機からファイルマネージャーなどで取りだせます。ここでは、Google製のファイルマネージャーの「Files by Google」を使ってAPKファイルを取りだす方法を説明します。
すでにAPKファイルを用意してある場合は、この手順は飛ばしてください。
まず、Androidの実機に「Files by Google」をインストールします。
次に、Filesのホーム画面から[アプリ]をタップします。

インストールされているアプリの一覧が表示されるので、APKファイルを取りだしたいアプリの右の3点ドットをタップし、[共有]を選択します。

あとは、共有先を選択する画面が表示されるので、ニアバイシェアやGoogle Drive、Dropboxなど任意の手段でPCに送信します。
OBBファイルの入手方法
OBBファイルはAPKファイルと同じく、Androidの実機から取りだせます。
Filesを使う場合は、ホーム画面から[内部ストレージ]をタップします。

次に、[Android]>[obb]と進んでいくと、アプリのパッケージ名のフォルダーが表示されます。該当するフォルダーを開くと.obbファイルが格納されているので、これをPCに送信します。
XAPKファイルの作り方
ファイルの準備
PCにAPKファイルとOBBファイルがあることを確認したら、それらを1つのフォルダーにまとめます。このフォルダーには、他のファイルは含めないでください。ここでは、xapkという名前のフォルダーを作成し、その中にAPKファイルとOBBファイルを格納します。
APKファイルは[パッケージ名].apkという名前にしてください。たとえば、com.example.app.apkのようにします。
xapkフォルダーの中にAndroidフォルダーを作り、さらにその中にobbフォルダーを作ります。obbフォルダーの中には、[パッケージ名]という名前のフォルダーを作ります。たとえば、com.example.appのようにします。このフォルダーの中に、OBBファイルを格納します。
OBBファイルの名前は、main.[バージョンコード].[パッケージ名].obbという形式になっていることを確認してください。たとえば、main.12345.com.example.app.obbのようにします。mainの部分はpatchでも(おそらくは)大丈夫だと思われます。
ここまで終わると、xapkフォルダーの中身は次のようになります。
📁xapk└── 📁Android ├── 📁obb │ └── 📁com.com.example.app │ └── main.12345.com.example.app.obb └── com.example.app.apkここまでできたら、次の手順に進みます。
manifest.jsonの作成
次は、xapkフォルダーにmanifest.jsonという名前のファイルを作成します。このファイルには、XAPKファイルの情報を記述します。
任意のテキストエディターを開き、manifest.jsonに次の内容を記入します。
{ "xapk_version": 1, "package_name": "[パッケージ名]", "name": "[アプリ名]", "version_code": "[バージョンコード]", "version_name": "[バージョン番号]", "min_sdk_version": "18", "target_sdk_version": "27", "total_size": 158572944, "expansions": [ { "file": "Android/obb/[パッケージ名]/main.[バージョンコード].[パッケージ名].obb", "install_location": "EXTERNAL_STORAGE", "install_path": "Android/obb/[パッケージ名]/main.[バージョンコード].[パッケージ名].obb" } ]}[パッケージ名]、[アプリ名]、[バージョンコード]、[バージョン番号]はそれぞれ、実際の値に置き換えてください。min_sdk_versionやtarget_sdk_version、total_sizeは、分かる場合はその値を設定してください。分からない場合は適当な値で大丈夫です。
たとえば、[パッケージ名]がcom.example.app、[アプリ名]がExample App、[バージョンコード]が12345、[バージョン番号]が1.0.0の場合は、次のようになります。
{ "xapk_version": 1, "package_name": "com.example.app", "name": "Example App", "version_code": "12345", "version_name": "1.0.0", "min_sdk_version": "18", "target_sdk_version": "27", "total_size": 158572944, "expansions": [ { "file": "Android/obb/com.example.app/main.12345.com.example.app.obb", "install_location": "EXTERNAL_STORAGE", "install_path": "Android/obb/com.example.app/main.12345.com.example.app.obb" } ]}OBBファイルが複数個ある場合は、expansionsの中に複数のオブジェクトを記述します。
{ "xapk_version": 1, "package_name": "com.example.app", "name": "Example App", "version_code": "12345", "version_name": "1.0.0", "min_sdk_version": "18", "target_sdk_version": "27", "total_size": 158572944, "expansions": [ { "file": "Android/obb/com.example.app/main.12345.com.example.app.obb", "install_location": "EXTERNAL_STORAGE", "install_path": "Android/obb/com.example.app/main.12345.com.example.app.obb" }, { "file": "Android/obb/com.example.app/patch.12345.com.example.app.obb", "install_location": "EXTERNAL_STORAGE", "install_path": "Android/obb/com.example.app/patch.12345.com.example.app.obb" } ]}manifest.jsonに必要な内容を入力したら、保存します。
ZIP化
ここまでできたら、xapkフォルダーの中身をZIP圧縮します。xapkフォルダー自体を圧縮するわけではありません。xapkフォルダーを開き、中身をすべて選択した状態でZIP圧縮します。
ZIPファイルの名前は、[パッケージ名].xapkという形式にしてください。たとえば、com.example.app.xapkのようにします。
これで、XAPKファイルの完成です。任意のXAPKインストーラーでアプリをインストールできるようになります。
まとめ
今回はXAPKファイルの作り方について説明しました。XAPKファイルを作成するためにビルドは不要で、必要なファイルを揃えてZIP圧縮するだけで完成します。
おまけ
自動でXAPKファイルを作成するツールもありましたが、Pythonのライブラリーのバージョン関連のエラーで動きませんでした。
参考
記事をシェア
フォローして最新情報を入手
Googleの優先ソースに追加すると、このサイトの記事をGoogleで見つけやすくなります。また、ぜひXやRSSフィードもフォローしてください。
-1.png&w=1080&q=75)
生まれた時から、母国語よりも先にJavaScriptを使っていました。ネットの海のどこにもいなくてどこにでもいます。
Webフロントエンドプログラマーとして、TypeScriptを用いたWebアプリやブラウザー拡張機能を制作。Xのシャドウバン検知ツール「Shadowban Scanner」やリンクカード復活ツール「Restore Link Card」を公開し、国内外のメディアで紹介されました。iGEM 2023ではJapan-UnitedチームのWikiを制作してGrand Prizeの獲得に貢献。ブログではXやSNSの最新ニュース、不具合の検証と対処法、フロントエンド開発の知見を発信しています。






![Discordの[プロフィールのプライバシー]設定のスクリーンショット](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fdiscord-profile-privacy-settings.png&w=3840&q=75)
![スマートフォンのホーム画面の[Social]フォルダーを表示した写真。フォルダー内にはFacebook、Instagram、Threads、X、LinkedIn、TikTok、YouTubeのアイコンが配置されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Ffacebook-instagram-threads-x-twitter-linkedin-tiktok-youtube-mobile-app-unsplash.jpg&w=3840&q=75)



![Gboardの[フリック入力のみ]の設定画面の開き方を示したスクリーンショット](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fgboard-flick-only.png&w=3840&q=75)
![Xアプリの上部に[ポストを送信できません][View draft]と表示されているようす](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fnew-x-android-unable-to-send-post.png&w=3840&q=75)