<pre name="code" class="php">//$type 文件類型
function getUploadsDir($type){
$date = date('Y-m');
$filename = C('UPLOAD_PATH').$type.'/'.$date;
if(mkdirs($filename)){
return $date;
}
return false;
}
/*
解析apk並獲取信息
$apk_path apk路徑
*/
function apk_parser($apk_path){
//執行aapt命令,輸出apk信息
exec(C('AAPT_PATH')."/aapt d badging ".$apk_path, $out, $return);
$base_info_reg = '/^package: name=+.*versionCode=+.*versionName+.*/';
$name_zh_reg = '/^application-label:+.*/';
$icon_reg = '/^application-icon-[0-9]{3}+.*/';
$base_info = $name_zh = '';
$icons = array();
foreach ($out as $key => $value) {
if(!$base_info){
if(preg_match($base_info_reg,$value,$matchs)){
$base_info = $value;
}
}
if(!$name_zh){
if(preg_match($name_zh_reg,$value,$matchs)){
$name_zh = $value;
}
}
if(preg_match($icon_reg,$value,$matchs)){
$icons[] = $value;
}
}
$base_info_arr = explode('\'', $base_info);
$name_zh_arr = explode('\'', $name_zh);
$data['package_name']=$base_info_arr[1]; // 應用包名
$data['version_code']=$base_info_arr[3]; // 版本代碼
$data['version_name']=$base_info_arr[5]; // 版本名稱
$data['app_name']=$name_zh_arr[1]; // 應用名稱
if($icons){
foreach ($icons as $key => $value) {
$icons_arr = explode('\'', $value);
$icon[$key] = $icons_arr[1];
}
if($icon){
$zip = new \ZipArchive;
if ($zip->open($apk_path) === true) {
$tpl_name = C('UPLOAD_PATH').'tpl/';
$num = count($icon)-1;
for($i=$num;$i>=0;$i--){
if($zip->extractTo($tpl_name, array($icon[$i]))){
$is_extract = 1;
break;
}
}
if($is_extract){
//獲取上傳目錄
if($filename = getUploadsDir('images')){
$save_name = uniqid();
//獲取後綴
$fileinfo = pathinfo($icon[$i]);
$exts = strtolower($fileinfo["extension"]);
$img_name = $filename.'/'.$save_name.'.'.$exts;
if(copy($tpl_name.$icon[$i],C('UPLOAD_PATH').'images/'.$filename.'/'.$save_name.'.'.$exts)){
$data['app_icon']= $img_name;
$result = 1;
}
}
//刪除臨時文件中的文件
@unlink($tpl_name.$icon[$i]);
}
}
}
}
if(!$result){
$data['app_icon'] = '';
}
return $data;
}