Google Play Services に含まれてるはずの〇〇クラスがどの aar に入ってるか調べる
背景
仕事で某 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
Author And Source
この問題について(Google Play Services に含まれてるはずの〇〇クラスがどの aar に入ってるか調べる), 我々は、より多くの情報をここで見つけました https://qiita.com/tkooler_lufar/items/5b4174ff060d76558bb5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .