exec 関数実行エラー - アプリケーション: PHP が apk のアイコン画像を抽出します
作者: Lin Zimu wolinxuebin
転載用に保管してください: http://blog.csdn.net/wolinxuebin
私は今日、apk から画像アイコン情報を読み取るプロジェクトに取り組んでいます。読み込むデータ量が多いことと、現在のテスト処理がWindows環境であるため、処理後のデータをサーバーにアップロードするのに時間がかかります。
主に次の 2 つのことを行います: 1. apk のアイコン パスとその他の情報を読み取ります。 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. 解凍: http://download.csdn.net/detail/wolinxuebin/4464939 winrar をテストしましたが、おそらく私のスキルが限られているため、APK を解凍できません
ここで非常に重要な点についてお話します。実行操作エラー
今日、私のソフトウェアは元々 E:/Program Files/GnuWin32/ にインストールされていたため、定義したときは
でした。
define("UNZIP","E:/Program Files/GnuWin32/bin/unzip.exe");
exec("{$aapt} d badging {$apk_file}",$out,$return);
そして、このコマンドはコマンドラインから完全に実行できます。
最後に、exec() の commod パラメータのディレクトリ にはスペース を含めることはできないことがわかりました。つまり、Program Files を ProgramFiles に変更する必要があるため、変更しました。インストールディレクトリ。