exec 函数执行异常――应用:PHP提取apk的icon图标图片

WBOY
发布: 2016-06-13 13:18:37
原创
982 人浏览过

exec 函数执行错误――应用:PHP提取apk的icon图标图片

作者:林子木 wolinxuebin

转载请保留:http://blog.csdn.net/wolinxuebin

 

  今天在做项目,从apk中读取图片icon信息。因为有大量的数据要读取,又因为现在自己测试的处理的都是windows环境,将数据处理完之后才上传到服务器,真心高了半天了。

   主要是做了两件事:1、读取apk的icon路径等信息 2、解压出该路径下的图片。

    直接上代码先:

<?php /**********************************
 * 作者:林子木
 * 功能:提取apk中的icon
 * 系统:windows
 */
	define("AAPTTOOL","c:/apktool/aapt");//aapt工具的路径
	define("UNZIP","E:/GnuWin32/bin/unzip.exe");//试了试winrar等,没成功,就用了unzip,而linux有自带这个的
		
    function getApkIcon($apk_file,$save_path){
    	
    	$aapt = AAPTTOOL;	//aapt工具的路径
    	exec("{$aapt} d badging {$apk_file}",$out,$return);//从apk中解除信息
    	//print_r('$out');		//可以查看输出信息
		if($return == 0){
			$str_out = implode("\n", $out);//分离信息
		}
    
		$pattern_icon = "/icon='(.+)'/isU";	//提取icon信息
		preg_match($pattern_icon, $str_out,$m);
		$info['icon']= $m[1];
		
		if($info['icon']){
			$command = UNZIP." -o -j {$apk_file} {$info['icon']} -d $save_path";
			exec($command);//解压
    	}
    }
 
    getApkIcon("c:/test.apk","c:/tmp/");

?>
登录后复制

用到的工具有:1、apktool  这个网上挺多的,还有安装教程,唯一麻烦是要在java环境下才能运行

                            2、unzip  :http://download.csdn.net/detail/wolinxuebin/4464939 测试了winrar不大能解压apk,可能因为我水平有限


这里再讲讲很重要的一点,exec运行出错

     今天本来我的软件是装在E:/Program Files/GnuWin32/ 下的 所以define的时候是

define("UNZIP","E:/Program Files/GnuWin32/bin/unzip.exe");
登录后复制
     但是始终运行没有结果,这个exec不会报错的

exec("{$aapt} d badging {$apk_file}",$out,$return);
登录后复制
  查看$return 始终是1 那么就是没有运行成功。

   而这命令在命令行里面是完全可以运行的。

   最后终于发现,exec()中的commod参数中的目录,不能包含空格,也就是Program Files 应该变为ProgramFiles才行,所以我就换了一个安装目录。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!