🤖

[Android] bundletool で aab ファイルの情報を取得する

2022/02/04に公開

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