thinkphp使用aapt獲取apk信息

<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;
}


發佈了12 篇原創文章 · 獲贊 6 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章