読者です 読者をやめる 読者になる 読者になる

xengineer’s diary

結果、メモ的な内容になっています。

Android端末からapk抽出

Android端末からapk抽出。そのまんまです。

まずは、adbコマンドをインストールしましょう。

下記見てインストールしましょう。

http://dev.digitrick.us/notes/ADBCommandOnMac

apk取得まで

だいたいこの辺のadbコマンドを実行します。

  • adb version
  • adb devices
  • adb shell pm list packages
  • adb pull

adb version

adbのバージョン情報みれるコマンド。

$ adb version
Android Debug Bridge version 1.0.32
Revision eac51f2bb6a8-android

adb devices

PCに接続されてるAndroidデバイス一覧を取得するコマンド。 Android端末のUSB debugがenableされてない場合、一発目は下記な感じの出力になる。

$ adb devices
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
9b1efacc        unauthorized

この時、端末側で、「USB DebugをこのPCから常にenableにしますか?」的なダイアログが 出てるので、承諾すると、PC側出力が下記な感じになる。

$ adb devices
List of devices attached
9b1efacc        device

unauthorized -> deviceに変わるのね。

adb shell pm list packages

今回は、実機からapkを抽出したいので、まずはパッケージ名を探してみる。

$ adb shell pm list packages
package:jp.recruit.atnd
package:com.amazon.mShop.android.shopping
package:com.asana.app
package:com.skype.raider
package:com.hipchat
package:com.google.android.youtube
package:com.kouzoh.mercari
package:com.android.providers.telephony
...
...
...

こんな感じ。当たり前だけど、grep でフィルタもできる。

$ adb shell pm list packages | grep cyanogenmod
package:org.cyanogenmod.wallpapers.photophase
package:org.cyanogenmod.audiofx
package:com.cyanogenmod.setupwizard
package:com.cyanogenmod.account
package:cyanogenmod.platform
package:org.cyanogenmod.profiles
package:com.cyanogenmod.lockclock
package:com.cyanogenmod.updater
package:org.cyanogenmod.themes.provider
package:com.cyanogenmod.wallpapers
package:com.cyanogenmod.trebuchet
package:org.cyanogenmod.cmsettings
package:org.cyanogenmod.theme.chooser
package:com.cyanogenmod.filemanager
package:com.cyanogenmod.eleven

adb pull

そして、最後に、apkを抽出する。 でもこれだけだと、パッケージのpathがないので、-f オプションをつけて、adb shell pm list packagesを実行する。

$ adb shell pm list packages -f | grep taito
package:/data/app/jp.co.taito.am.siInfinityGene-1/base.apk=jp.co.taito.am.siInfinityGene
package:/data/app/jp.co.taito.groovecoasterzero-1/base.apk=jp.co.taito.groovecoasterzero

なるほど。

では、adb pullを実行。

$ adb pull /data/app/jp.co.taito.am.siInfinityGene-1/base.apk
4528 KB/s (27219843 bytes in 5.870s)

きた?のかな?

$ ls -lthr base.apk
-rw-r--r--  1 nemoto_hideaki  staff    26M  3 21 12:56 base.apk

無事26MBがダウンロードされたようです。おしまい。