\S+)=)?\'(?P.*?)\'/', $value, $matches, PREG_SET_ORDER); foreach ($matches as $match) { if ($match['key']) { $lineana[$match['key']] = $match['value']; } else { $lineana[] = $match['value']; } } $apkInfo[$key][] = $lineana; } //checkRet会把上面读出来的配置整理一下 $ret = $this->checkRet($apkInfo); } catch (Exception $e) { echo $e->getMessage(); $ret = array(); } return $ret; } /** * 从Apk包中提取指定文件,并移到$toFile * * @param $apkFile apk文件 * @param $sourceFile apk文件中相应文件路径 * @param $toFile 输出文件 * @return bool */ function getFileFromApk($apkFile, $sourceFile, $toFile) { exec('unzip ' . $apkFile . ' $sourceFile -d /tmp', $out, $return); if (rename("/tmp/" . $sourceFile, $toFile)) { return true; } else { return false; } } /** * 辅助函数,处理Apk信息数组 * * @param $info * @return mixed */ function checkRet($info) { foreach ($info as $key => $lineana) { if (is_array($lineana)) { $info[$key] = $this->checkRet($lineana); if (count($info[$key]) == 1) { $info[$key] = current($info[$key]); } } else { } } return $info; }} 一段使用示例:getApkInfo($apk);var_dump($res);$packageName = $res['package']['name'];$appName = $res['application-label']; $android->getFileFromApk($apk,$res['application']['icon'],$iconFile);注意事项:1 运行该程序需要PHP有exec权限2 获取的apk包信息中,APP名称可能会有多国语言名称,ICON会有多种尺寸; 如果有需要,请自行根据需要修改,上面只介绍了使用默认信息.
php 获取apk,php读取apk包信息,提取应用图标
最新推荐文章于 2021-09-09 14:28:03 发布