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

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

WBOY
WBOYOriginal
2016-06-13 13:18:371011browse

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才行,所以我就换了一个安装目录。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn