• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-24) 33次浏览 已收录 0个评论

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

作者:林子木 wolinxuebin

转载请保留:http://blog.gaodaima.com/wolinxuebin

今天在做项目,从apk中读取图片icon信息。因为有大量的数据要读取,又因为现在自己测试的处理的都是windows环境,将数据处理完之后才上传到服务器,真心高了半天了¥本文来源gaodai#ma#com搞@@代~&码网^搞gaodaima代码

主要是做了两件事: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.gaodaima.com/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才行,所以我就换了一个安装目录。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:exec 函数执行异常——应用:PHP提取apk的icon图标图片

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址