前面有说明android获取程序信息,这些信息是基本信息,我想提取android:minSdkVersion的值,可还没有发现用程序可以提取出来。
有一个比较笨的方式是解压apk文件,分析apk文件里的xml。
首先apk文件其实是zip文件,改名即可按zip文件解压,而xml文件是二进制的,倒是需要另外的软件解决。
如果需要提取,不需要再重新打包,可以改名直接解压,否则可以试试apktool来解压和打包,不重复说明。
浏览二进制的xml文件,可以用 AXMLPrinter2 解决,在 android4me 的工程里面可以下载到。
AXMLPrinter2.jar Prints XML document from binary XML file (with correct namespace handing & attribute formatting).
下面演示一下解析过程:
TIPS: minSdkVersion 在安装时有用,如果版本比这个低,就根本安装不上此程序的。
参考阅读:
1 探究 Android 系統應用程式的祕密
2 又一个反编译利器Apktool (反编译和重建apk)
3 http://code.google.com/p/android-apktool/
4 How to parse the AndroidManifest.xml file inside an .apk package
5 android4me
原创内容如转载请注明:来自 阿权的书房
有一个比较笨的方式是解压apk文件,分析apk文件里的xml。
首先apk文件其实是zip文件,改名即可按zip文件解压,而xml文件是二进制的,倒是需要另外的软件解决。
如果需要提取,不需要再重新打包,可以改名直接解压,否则可以试试apktool来解压和打包,不重复说明。
浏览二进制的xml文件,可以用 AXMLPrinter2 解决,在 android4me 的工程里面可以下载到。
AXMLPrinter2.jar Prints XML document from binary XML file (with correct namespace handing & attribute formatting).
下面演示一下解析过程:
root@aslibra:/tmp/apk# ls
c.apk
root@aslibra:/tmp/apk# mv c.apk c.zip
root@aslibra:/tmp/apk# unzip c
Archive: c.zip
...
inflating: res/layout/main.xml
...
inflating: AndroidManifest.xml
extracting: resources.arsc
...
root@aslibra:/tmp/apk# java -jar /path/to/AXMLPrinter2.jar AndroidManifest.xml |grep minSdkVersion
android:minSdkVersion="2"
c.apk
root@aslibra:/tmp/apk# mv c.apk c.zip
root@aslibra:/tmp/apk# unzip c
Archive: c.zip
...
inflating: res/layout/main.xml
...
inflating: AndroidManifest.xml
extracting: resources.arsc
...
root@aslibra:/tmp/apk# java -jar /path/to/AXMLPrinter2.jar AndroidManifest.xml |grep minSdkVersion
android:minSdkVersion="2"
TIPS: minSdkVersion 在安装时有用,如果版本比这个低,就根本安装不上此程序的。
参考阅读:
1 探究 Android 系統應用程式的祕密
2 又一个反编译利器Apktool (反编译和重建apk)
3 http://code.google.com/p/android-apktool/
4 How to parse the AndroidManifest.xml file inside an .apk package
5 android4me
原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
perl程序缺少Unicode/String.pm
apache2.2.5以上可以正则匹配代理
