APK Analyzerを利用してアプリの情報を把握する

はじめに

本記事はAndroid Studioに付属しているAPK Analyzerを利用してアプリの様々な情報を把握する方法を紹介します。

APK Analyzerとは

APK Analyzerとは、Android Studioに付属しているAPKファイルを分析するためのツールです。
APK内に含まれるファイルを表示させたり、APKのファイルサイズを表示したりすることができます。

実行環境

この記事は以下の動作環境で動作確認しています。

  • Android Studio 4.0

APK Analyzerの使い方

APK Analyzerを起動する

APK Analyzerを起動する方法はいくつかあります。その中のひとつであるAndroid Studioでプロジェクトを開いている状態からAPK Analyzerにアクセスする方法を記載します。
今回はGoogleがAndroidアプリのアーキテクチャ解説のために公開している「Android Architecture Blueprints」のAPKファイルを分析する形でAPK Analyzerを紹介します。

  • Android Studioのメニューバーから、「Build」-> 「Analyzer APK」を選択し、分析対象のAPKを指定します。
  • APKを指定すると、以下のようなウィンドウが表示され、ここから様々な情報にアクセスできるようになります

情報を参照する

ファイルサイズ

APK自体のサイズおよび、APK内に含まれる各ファイルのサイズを参照することができます。Raw SizeとDownload Sizeの2種類のサイズ表示があります。Raw Sizeはディスク上のサイズを示しており、Download SizeはGoogle Playからダウンロードされる際のサイズが表示されます。

DEXファイル

APK内に含まれるDEX(Dalvik Executable)ファイルの内容を参照することができます。以下の画像の「classes.dex」が該当のファイルです。このDEXファイルにはコンパイル済みのコードが入っています。つまりKotlin/JavaファイルをAndroidで実行できるようコンパイルし圧縮したものです。multiindex化されているアプリは、APK内にDEXファイルが複数含まれるようになります。
AKP AnalyzerではDEXファイルから各クラスを選択し、そのクラス内に含まれるフィールドやメソッドを表示できます。フィルタがあるので、フィールドやメソッドの表示・非表示を切り替えることができます。
またそのクラス内で定義されているメソッド数が「Defined Methods」として、そのクラスによって参照されているメソッド数が「Referenced Methods」として、列に表示されます。

リソースファイルの確認

APK Analyzerを利用すれば、APK内に含まれるテキストファイル等にもアクセス可能です。ここでは例として、アプリ内で利用されている文字列リソースを表示します。

他にも画像リソースにアクセスしてプレビューで確認したり、META-INFOからアプリの署名関連を確認したりすることができます。

使いどころ

過去に私がどのようにAPK Analyzerを利用したかを紹介します。

64Kの参照制限を回避する

アプリ内のメソッドの合計数が65,536メソッドを超過するとビルドエラーとなります。これはアプリ内で自分が書いているメソッドのみならず、アプリで利用しているサードパーティ製のライブラリに含まれるメソッドや、Androidフレームワーク自体のメソッドすべてを含みます。
DEXファイルの説明の箇所にも書きましたが、APK Analyzerを利用することでアプリ内のメソッドの総数を把握することができます。以下にある画像の赤線部分の「and reference 45567 methods.」がその総数に該当します。

メソッド数が大きくなりそうな場合には、APK Analyzerを利用して事前にどれくらいのメソッドがアプリ内に含まれているか確認し、ライブラリを整理したり、自分が書いているメソッドを見直したりすることで事前に64Kの参照制限を回避することができます。それが難しい場合はmultiindexを有効にする方法もあります。

アプリが64bitアーキテクチャをサポートしているか確認する

Google Playで公開するアプリは、64bitアーキテクチャをサポートしている必要があります。アプリ内でC++が含まれるサードパーティ製のライブラリを利用している場合など、Google Play公開時に「このアプリはGoogle Playの64bitの要求を満たしていませんよ」とアラートが表示されることがあります。そんなときにAPK Analyzerを利用し、どのライブラリが原因か調査することができます。

対象となるAPKファイルをの階層構造を表示した後で、以下のフォルダがあるか確認します。

  • lib/x86
  • lib/armeabi-v7a

これらのフォルダの中に「.so」形式のファイルが入っていなければ、64bitアーキテクチャをサポートしています。もしくは上記のフォルダに「.so」形式のファイルが入っていたとしても、同様のファイルが以下のフォルダにも入っていれば、対応は不要です。

  • lib/x86_64
  • lib/arm64-v8a

もし64bitアーキテクチャのサポートが不十分な場合は、「Support 64-bit architectures」を参考に対応が必要です。

おわりに

以上がAPK Analyzerを利用したアプリの情報の把握の方法でした。アプリの概要を手軽に把握したいときに便利です。ぜひとも利用してみてください。