LoginSignup
17
14

More than 5 years have passed since last update.

Androidの開発中にコードを消してしまい開発機にインストールしたAPKにのみコードが残っている場合の対処方法

Last updated at Posted at 2016-07-07

概要

  • 開発中に手が滑ってgit checkout .してしまい未コミットのコードが消えた
  • 実機で開発中だったため端末内にAPKが残っている
  • APKからコードをサルベージする

APKのパスの確認

adbを使い端末にインストールされているAPKのパッケージパスを確認する。

$ adb shell pm list packages -f | grep horie1024
package:/data/app/horie1024.jp.sample-1/base.apk=horie1024.jp.sample

この場合、パスは/data/app/horie1024.jp.sample-1/base.apkになる。

端末からAPKを取得

以下のコマンドを実行し端末からAPKを取り出す。

$ adb pull /data/app/horie1024.jp.sample-1/base.apk
[100%] /data/app/horie1024.jp.sample-1/base.apk

これでbase.apkを取り出せる。

逆アセンブル

apktoolのインストール

apktoolをHomebrewでインストールする。

$ brew install apktool

逆アセンブルの実行

$ apktool decode base.apk

実行後にbaseディレクトリが生成されるので、それ以下にファイルが出力されている。

サルベージ

AndroidManifestやlayoutなどのxmlはほぼそのままサルベージできる(match_parentがfill_parentになっていたりする)。Javaのコードについては、smali形式となっているので慣れないと読み取りにくい。

参考

17
14
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
17
14