通过PHP怎样取到android系统下apk应用的包名,版本号等信息
2010-12-31 17:38
399 查看
公司项目关系,要求在通过PHP解析android系统应用apk包内的一切可用的信息。比如说:APK包名,版本号,版本名,安装权限等一系列关于对应包的信息。通过google查找相关的解决方案,都没有找到很有效的解决方案。但取得了解决此问题的思路。
目前就我所了解,有二种方案:
第 一:通过安装PHP-JAVA-Bridge桥接方式,让PHP环境下可以执行JAVA。通过JAVA去解析APK包内的
AndroidManifest.xml文件,通过解析出来的XML可以取得上面所提到的相关信息。第二:在服务器上安装android-apktool
工具,通过aapt命令直接去解析apk包的信息。
有了相关思路,我就按照上面的二种思路去尝试解决问题。
第一种方案,
a.在服务器上安装成功了PHP-JAVA-Bridge扩展 。环境是成功配置完成后。
b.按照思路就是能过JAVA去调用这个包
http://code.google.com/p/android4me/source/browse/src/android4me/res/AXMLParser.java
c.把解析出来的信息存成本地文件,再用正则表达式去剥到我们相要的信息.
d.写进数据库,就完成了我们想要信息。
可是我遇到的问题是,由于我对JAVA知识涉及不太多(BS一下自己能力),项目时间和进度要求又太紧。公司相关的同事也不太了解。所以这个方案被我否定了。留下有时间再研究怎么用。
接下来我重点说一下第二种方案(已在系统中成功运行@_@)
第二种方案:
a.在服务器上安装android-apktool,我们服务器是CentOS5.5,所以我选择的包是:apktool-install-linux-2.2_r01-1.tar.bz2
。再执行安装(参考安装说明),
执行命令:
b.测试aapt命令是否可用。执行命令:
如果你能成功看到类似如下输出,则说明你已成功安装android-apktool。
c.利用PHP的函数exec去执行aapt命令。
一般PHP环境,默认是不允许exec,shell_exec等shell命令函数的。所以我们得更改php.ini配置文件。关于开启此函数方法,朋友
们可以自己去查找一下,很简单的。请注意:开启exec函数功能,可能会对服务器安全有比较大的隐患,所以请自行决定是否可行。
写一个test.php文件
在这里请一定注意二点:
1.你的WEB用户权限是否有执行aapt的权限,如果没有,请用visudo修改sudo的配置文件,在最后加入这样一行:
2.PHP脚本执行sudo时,可能会报出:sudo: sorry, you must have a tty to run
sudo错误,提示需要一个终端才能执行sudo.此时解决办法,用visduo命令,找到Defaults
requiretty这行前面加#号它注解掉。
d.正则表达式取到我们想要的任何信息。
e.写入数据库,搞定!
到这里,我们就实现了APK包信息的读取功能,算是达到我们想要的功能。但就这方式,不是我理想中的解决方式。我最理想中的解决方案就是用JAVA去解决这个问题。不过暂时,也只能这样做。
可参考的相关网站信息列表有:
http://stackoverflow.com/questions/3014369/php-how-to-get-version-from-android-apk-file
http://code.google.com/p/android-apktool/
http://code.google.com/p/android4me/source/browse/src/android4me/res/AXMLParser.java
http://www.weizhifeng.net/?p=307
http://linux.chinaunix.net/bbs/viewthread.php?tid=901336
/content/6447931.html
目前就我所了解,有二种方案:
第 一:通过安装PHP-JAVA-Bridge桥接方式,让PHP环境下可以执行JAVA。通过JAVA去解析APK包内的
AndroidManifest.xml文件,通过解析出来的XML可以取得上面所提到的相关信息。第二:在服务器上安装android-apktool
工具,通过aapt命令直接去解析apk包的信息。
有了相关思路,我就按照上面的二种思路去尝试解决问题。
第一种方案,
a.在服务器上安装成功了PHP-JAVA-Bridge扩展 。环境是成功配置完成后。
b.按照思路就是能过JAVA去调用这个包
http://code.google.com/p/android4me/source/browse/src/android4me/res/AXMLParser.java
c.把解析出来的信息存成本地文件,再用正则表达式去剥到我们相要的信息.
d.写进数据库,就完成了我们想要信息。
可是我遇到的问题是,由于我对JAVA知识涉及不太多(BS一下自己能力),项目时间和进度要求又太紧。公司相关的同事也不太了解。所以这个方案被我否定了。留下有时间再研究怎么用。
接下来我重点说一下第二种方案(已在系统中成功运行@_@)
第二种方案:
a.在服务器上安装android-apktool,我们服务器是CentOS5.5,所以我选择的包是:apktool-install-linux-2.2_r01-1.tar.bz2
。再执行安装(参考安装说明),
1.
# Linux:
2.
1. Download apktool-install-linux-* file 【下载文件】
3.
2. Download apktool-* file 【下载文件】
4.
3. Unpack both to /usr/local/bin directory (you must have root permissions)【在/usr/local/bin解压,需要有root权限】
执行命令:
1.
$
tar
-jxvf apkktool-
install
-linux-2.2_r01-1.
tar
.bz2
b.测试aapt命令是否可用。执行命令:
1.
$ aapt d badging
test
.apk
如果你能成功看到类似如下输出,则说明你已成功安装android-apktool。
c.利用PHP的函数exec去执行aapt命令。
一般PHP环境,默认是不允许exec,shell_exec等shell命令函数的。所以我们得更改php.ini配置文件。关于开启此函数方法,朋友
们可以自己去查找一下,很简单的。请注意:开启exec函数功能,可能会对服务器安全有比较大的隐患,所以请自行决定是否可行。
写一个test.php文件
1.
<?php
2.
exec
(
"/usr/bin/sudo /usr/local/bin/aapt d badging /var/www/test/test.apk>info.txt 2>&1"
,
$out
,
$return
);
3.
//用root 去执行aapt命令,把输出的信息写入info.txt文件,下面我们要用用正则取输出的相关数据
4.
var_dump(
$out
);
5.
var_dump(
$return
);
6.
?>
在这里请一定注意二点:
1.你的WEB用户权限是否有执行aapt的权限,如果没有,请用visudo修改sudo的配置文件,在最后加入这样一行:
1.
www ALL=NOPASSWD:/usr/
local
/bin/aapt(让www用户以root权限来执行aapt,NOPASSWD代表
sudo
时候不用输入密码).
2.PHP脚本执行sudo时,可能会报出:sudo: sorry, you must have a tty to run
sudo错误,提示需要一个终端才能执行sudo.此时解决办法,用visduo命令,找到Defaults
requiretty这行前面加#号它注解掉。
d.正则表达式取到我们想要的任何信息。
e.写入数据库,搞定!
到这里,我们就实现了APK包信息的读取功能,算是达到我们想要的功能。但就这方式,不是我理想中的解决方式。我最理想中的解决方案就是用JAVA去解决这个问题。不过暂时,也只能这样做。
可参考的相关网站信息列表有:
http://stackoverflow.com/questions/3014369/php-how-to-get-version-from-android-apk-file
http://code.google.com/p/android-apktool/
http://code.google.com/p/android4me/source/browse/src/android4me/res/AXMLParser.java
http://www.weizhifeng.net/?p=307
http://linux.chinaunix.net/bbs/viewthread.php?tid=901336
/content/6447931.html
相关文章推荐
- 通过PHP怎样取到android系统下apk应用的包名,版本号等信息
- 通过PHP怎样取到android系统下apk应用的包名,版本号等信息
- 通过PHP怎样取到android系统下apk应用的包名,版本号等信息
- Android获取系统已安装应用软件程序(apk)信息
- Android 利用 aapt 解析 apk 得到应用名称 包名 版本号 权限等信息
- 通过android代码获取android系统的imei、手机型号、手机品牌、android系统的版本号、sdk版本号等信息
- Android获取系统已安装应用软件程序(apk)信息
- Android系统信息和Apk应用信息获取
- Android-通过意图安装、卸载、打开指定的apk和进入指定程序的应用信息
- Android通过aapt命令获取apk详细信息(包括:文件包名,版本号,SDK等信息)
- 通过android代码获取android系统的imei、手机型号、手机品牌、android系统的版本号、sdk版本号等信息
- android 利用 aapt 解析 apk 得到应用名称 包名 版本号 权限等信息
- android-获得".apk"文件的相关信息。包名、版本号等等
- Android系统apk应用的另一种启动方法---am命令---张子芳
- Android系统获取应用的Crash信息,保存在本地(可以自己实现上传到自己的服务器)
- Android ADB命令大全(通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装APK等)
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统
- PHP读取APK的包信息,包括包名,应用名,权限,LOGO等
- 获取应用的当前版本号&获取当前android系统的版本号
- [置顶] Android中高仿快牙实现Socket列表的展示,获取安卓手机系统安装的应用和自己安装的应用相关信息