2 apkファイルからxmlファイルを取得する方法

admin to Android SDK — Tags:  


apkファイルの中から layout の xml ファイルを見たくなったり、アニメーションのタイミングを見るために anim/hoge.xml を見たくなったり、文字列の中身を見るためにstring.xml を見たくなったりすることがあると思います。apkはzipファイルなのでファイル名を変更して解凍するとxmlファイルを取得することができますが、apkの中にある xml は高速にアクセスしたり、サイズを小さくするために Binary XML という方式で保存されているためです。

android-apktool というツールを利用すれば、この Binary XML を可読性のある Text XML に変換してくれます。



java -jar apktool.jar d foo.apk

なお、google playに公開されているアプリのapkのデコンパイルはアプリの利用規約で禁止されていることが多いのでやめておいたほうが無難です。

apk-tool のオプション


C:\dev\apk-tool>java -jar apktool.jar
Apktool v1.5.2 - a tool for reengineering Android apk files
Copyright 2010 Ryszard Wi?niewski 
with smali v1.4.1, and baksmali v1.4.1
Updated by @iBotPeaches 
Apache License 2.0 (

Usage: apktool [-q|--quiet OR -v|--verbose] COMMAND [...]


    d[ecode] [OPTS]  []
        Decode  to .


        -s, --no-src
            Do not decode sources.
        -r, --no-res
            Do not decode resources.
        -d, --debug
            Decode in debug mode. Check project page for more info.
        -b, --no-debug-info
            Baksmali -- don't write out debug info (.local, .param, .line, etc.)

        -f, --force
            Force delete destination directory.
        -t , --frame-tag 
            Try to use framework files tagged by .
            Use the specified directory for framework files
            Use if there was an error and some resources were dropped, e.g.:
            "Invalid config flags detected. Dropping resources", but you
            want to decode them anyway, even with errors. You will have to
            fix them manually before building.

    b[uild] [OPTS] [] []
        Build an apk from already decoded application located in .

        It will automatically detect, whether files was changed and perform
        needed steps only.

        If you omit  then current directory will be used.
        If you omit  then /dist/
        will be used.


        -f, --force-all
            Skip changes detection and build all files.
        -d, --debug
            Build in debug mode. Check project page for more info.
        -a, --aapt
            Loads aapt from specified location.

    if|install-framework  [] --frame-path []
        Install framework file to your system.

For additional info, see:
For smali/baksmali info, see: