LoginSignup
8
8

More than 5 years have passed since last update.

Google Play Services に含まれてるはずの〇〇クラスがどの aar に入ってるか調べる

Posted at

背景

仕事で某 Android アプリをビルドして実行したところ com.google.android.gms.iid.InstanceID というクラスが見つからない的なエラーが出たので調べてみたところ、どうやらアプリに組み込まれてる play-services-*-*.*.*.aar が足りないっぽいのですが
どの aar に入ってるのかわからなかったので find してみました。

方法

※以下、コマンドラインは bash で書いてます。

まず、play-services-*-*.*.*.aar を適当なディレクトリにコピーします。

cp ${SDK_PATH}/extras/google/m2repository/com/google/android/gms/play-services-*/${PLAY_SERVICES_VERSION}/*.aar ~/hoge/
cd ~/hoge

次に、 aar を解凍します。
実態は zip なので unzip とか使えます。

find . -name "*.aar" -exec unzip \{\} -d \{\}.d \;

解凍すると、中からクラスファイルの入った classes.jar が出てくるので、これも解凍します。
これも実態は zip です。

find . -name classes.jar -exec unzip \{\} -d \{\}.j \;

あとは解凍されたファイルの中から目的のクラスを検索すれば見つかります。
今回の僕のケースでは InstanceID が欲しいので InstanceID.class を find します。

find *.d/*.j -name InstanceID.class

ありました!
僕の求めていた aar は play-services-iid でした。

play-services-iid-9.0.1.aar.d/classes.jar.j/com/google/android/gms/iid/InstanceID.class
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8