转自他人——PC上获取android的apk信息
PC上获取Android Apk软件包的图标,权限,包名,版本等信息(http://hi.baidu.com/underalight/item/0892af2b4ff732889c63d1c1)
最近闲来无事,用java调用aapt做了个小程序,用来在PC上获取Android apk中的各种信息(图标,包名,权限,版本,应用程序名等)
主要的思路就是调用
1
|
aapt.exe dump badging xxx.apk |
然后逐行解析返回值以达到获取信息的目的
关键代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Runtime mRuntime = Runtime.getRuntime(); String order = "aapt.exe dump badging \"" + apkPath + "\"" ; Process proc = mRuntime.exec(order); InputStream stderr = proc.getInputStream(); InputStreamReader isr = new InputStreamReader(stderr); BufferedReader br = new BufferedReader(isr); String line = null ; while ((line = br.readLine()) != null ) { // 解析略 } br.close(); isr.close(); stderr.close(); proc.destroy(); |
其实这个程序里面比较麻烦的就是apk程序权限转中文描述的问题,在apk里面权限描述是通过
1
|
android.permission.XXXX |
进行描述的。我们在使用的时候需要将其转成对应的中文,所以啊需要自己结合android的权限描述进行翻译
android中所有的权限描述都在源码
android源码\frameworks\base\data\etc\platform.xml
程序的详细源码见:
http://pan.baidu.com/s/1i3uVXJZ
ps:
网上有很多apk安装器,其实其原理跟这个是一样的,此程序仅实现了apk信息获取,并没有涉及apk安装。要想增加安装功能,在程序中集成adb即可,各种手机助手也是这么做的,adb程序可以从各种手机助手的安装文件夹中找到,也可以从android sdk的platform-tools目录下获取三个文件(adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll)