LoginSignup
2
2

More than 3 years have passed since last update.

[Android]他の人のアプリを盗み見しよう

Posted at

業務上、競合他社アプリを盗み見参考にしたく、ソースコードを拝見させていただくことがたまーにあるので、備忘録として残す。

端末にインストール済みの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ファイル名でフォルダが作成される。
その中に、ソースコード類が入っているので、盗み見参考にすることができる。

まとめ

「甘い!! 武術の伝承とはすなわち模倣から始まるのだよ!」

史上最強の弟子ケンイチの登場人物、秋雨の名言である。

「すべての独創は模倣から始まる」

ジャパネットたかたの創業者、髙田明の名言である。

2
2
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
2
2