.apk ファイルに含まれる AndroidManifest.xml はバイナリ形式になっているため、そのままでは設定を読むことが出来ません。
元のXMLに戻すのではなく、XMLの情報を読みたいだけであれば、Android SDKに付属している aapt (Android Asset Packaging Tool)というツールを使うことで可能です。
aapt l -a <apkファイル>
aaptプログラムはapk作成のためのツールです。
それぞれのバージョン毎に独立した実行ファイルになっていて、platforms 以下それぞれのSDKバージョンのフォルダ以下に存在しています。
(追記)以前は platforms以下に分かれて配置されていましたが、現在は platform-tools フォルダに統合されました。
android-sdk/platform-tools/aapt
AndroidManifest.xml について書かれているのは “Android Manifest:”以下ですね。
res/drawable/icon.png
res/layout/items.xml
res/layout/main.xml
AndroidManifest.xml
resources.arsc
classes.dex
META-INF/MANIFEST.MF
META-INF/CERT.SF
META-INF/CERT.RSA
Resource table:
Package Groups (1)
Package Group 0 id=127 packageCount=1 name=com.example.foo
~中略~
Android manifest:
N: android=http://schemas.android.com/apk/res/android
E: manifest (line=2)
A: android:versionCode(0x0101021b)=(type 0x10)0x3
A: android:versionName(0x0101021c)=”1.2″ (Raw: “1.2”)
A: package=”com.example.foo” (Raw: “com.example.foo”)
E: application (line=6)
A: android:label(0x01010001)=@0x7f040000
A: android:icon(0x01010002)=@0x7f020000
E: activity (line=7)
A: android:label(0x01010001)=@0x7f040000
A: android:name(0x01010003)=”.Foo” (Raw: “.Foo”)
E: intent-filter (line=9)
E: action (line=10)
A: android:name(0x01010003)=”android.intent.action.MAIN” (Raw: “android.intent.action.MAIN”)
E: category (line=11)
A: android:name(0x01010003)=”android.intent.category.LAUNCHER” (Raw: “android.intent.category.LAUNCHER”)
E: uses-sdk (line=16)
A: android:minSdkVersion(0x0101020c)=(type 0x10)0x3
インテントごとの実行権限など一通りの設定を参照することが出来ます。
その他にもリソースID情報などもapkに関係する様々な情報を得られます。
参考:
– How to parse the AndroidManifest.xml file inside an .apk package(stackoverflow)
– エンコードされたAndroidManifest.xmlをデコードする