🤖
[Android] bundletool で aab ファイルの情報を取得する
budletool の dump コマンド
bundletool の README やコマンドラインヘルプ、Android Developers サイト では記載は無いのだが、bundletool-dump のサイトで紹介されているように、dump
コマンドにより versionCode
等、aab(Android App Bundle) ファイルの情報を取得することが出来る。
ただ、下記の dump manifest
の出力例をみれば分かるのだが、
dump manifest の出力例
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="31" android:compileSdkVersionCodename="12" android:versionCode="1" android:versionName="1.0" package="io.github.hkusu.sampleapp" platformBuildVersionCode="31" platformBuildVersionName="12">
<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="31"/>
<application android:allowBackup="true" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:debuggable="true" android:extractNativeLibs="false" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.SampleApplication">
<activity android:exported="true" android:label="@string/app_name" android:name="io.github.hkusu.sampleapp.MainActivity" android:theme="@style/Theme.SampleApplication.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:exported="true" android:name="androidx.compose.ui.tooling.PreviewActivity"/>
<provider android:authorities="io.github.hkusu.sampleapp.androidx-startup" android:exported="false" android:name="androidx.startup.InitializationProvider">
<meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer" android:value="androidx.startup"/>
<meta-data android:name="androidx.profileinstaller.ProfileInstallerInitializer" android:value="androidx.startup"/>
<meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup"/>
</provider>
<receiver android:directBootAware="false" android:enabled="true" android:exported="true" android:name="androidx.profileinstaller.ProfileInstallReceiver" android:permission="android.permission.DUMP">
<intent-filter>
<action android:name="androidx.profileinstaller.action.INSTALL_PROFILE"/>
</intent-filter>
</receiver>
</application>
</manifest>
同類のツールである apkanalyzer 程の情報は得られない(例えば permission の内容等)ので注意。
(補足) budletool のインストールの方法
bundletool のリリースページ( https://github.com/google/bundletool/releases ) から最新バージョンを調べて、curl で jar ファイルを取得する(リリースページから手動で jar ファイルをダウンロードしてもよい)。
$ curl -f -L -o bundletool.jar https://github.com/google/bundletool/releases/download/1.8.2/bundletool-all-1.8.2.jar
jar ファイルは適当なディレクトリに置き(今回は work
ディレクトリに置いたとする)、利用する際は次のように呼び出す。
$ java -jar work/bundletool.jar ..
ただ恒久的に利用するなら bundletoolの使い方メモ の記事のように、パスが通った場所に配置した方がよい。
Discussion