業務上、競合他社アプリを盗み見参考にしたく、ソースコードを拝見させていただくことがたまーにあるので、備忘録として残す。
端末にインストール済みのAndroidアプリをダウンロード
# PC、デバイス間の接続ができているか確認
$ adb devices
# 対象のパッケージを検索
$ adb shell pm list packages -f | grep [ダウンロード対象のキーワード]
ダウンロード対象のキーワードは会社名やアプリの名前を入力すれば大抵引っかかる。
# 例
$ adb shell pm list packages -f | grep yamachita0109
package:/data/app/com.yamachita0109.voice-Q6HZbU2pgLu4T3FCQg74kg==/base.apk=com.yamachita0109.voice
標準出力された値を分解する。
名 | 値 |
---|---|
APK保存先パス | /data/app/com.yamachita0109.voice-Q6HZbU2pgLu4T3FCQg74kg==/ |
APKファイル名 | base.apk |
アプリケーションID | com.yamachita0109.voice |
ダウンロード。
# APK保存先パスを指定
$ adb pull [APK保存先パス]
# 例
$ adb pull /data/app/com.yamachita0109.voice-Q6HZbU2pgLu4T3FCQg74kg==/
/data/app/com.yamachita0109.voice-Q6HZbU2pgLu4T3FCQg74kg==/: 1 file pulled. 31.4 MB/s (9086342 bytes in 0.276s)
# APKファイルがダウンロードされている
$ ls com.yamachita0109.voice-Q6HZbU2pgLu4T3FCQg74kg\=\=/
base.apk lib
APKファイルをデコンパイルする
jadxを使用する。
git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist
JDK 8 or higher must be installed:
なので注意すること。
やっとデコンパイル。
# Pathを通してもOK
$ build/jadx/bin/jadx --log-level error [APKファイルパス]
APKファイル名でフォルダが作成される。
その中に、ソースコード類が入っているので、盗み見参考にすることができる。
まとめ
「甘い!! 武術の伝承とはすなわち模倣から始まるのだよ!」
史上最強の弟子ケンイチの登場人物、秋雨の名言である。
「すべての独創は模倣から始まる」
ジャパネットたかたの創業者、髙田明の名言である。