首頁  >  文章  >  後端開發  >  巧用ThinkPHP5.1和 tufanbarisyildirim 快速解析apk

巧用ThinkPHP5.1和 tufanbarisyildirim 快速解析apk

little bottle
little bottle轉載
2019-04-20 17:48:283118瀏覽

對於apk,我可以說只會安裝,並不知道其中有什麼內容需要記錄下來。因為這類的項目完全沒有接觸過,而且網路上搜一下也看不到這類的開發流程和需求。本文的主要內容是關於用ThinkPHP5.1 和tufanbarisyildirim 解析apk,有興趣的朋友可以來了解一下。

TP5取得上傳檔案並驗證

tp5取得上傳檔案可以說是相當的簡單,(注意此處的$file的類型是tp5封裝的File)


$file = $this->request->file('file');

這樣就可以直接的取得上傳的文件,簡單的蛋痛。

首先驗證文件是否上傳了並且是否為空。


if (false === ($file instanceof File)) {
  //文件为空,抛异常/业务处理}

然後就是驗證檔案的型別了,apk的媒體訊息其實就是zip,千萬不要用字尾名來判斷。年輕的我就是用後綴來判斷的。

老司機看到就建議我使用getMime方法取得檔案的媒體進行進行配對。 (getMime屬於tp5 File的封裝方法)


if ('application/zip' !== $file->getMime()) {
  //文件类型错误,抛异常/业务处理}

tufanbarisyildirim

#加入composer


#
"require": {        "tufanbarisyildirim/php-apk-parser":"dev-master"
    }

然後到專案路徑安裝一下,沒安裝composer就安裝composer或直接從網路上拉咯。


composer install

 

#Parser解析apk

Parser位於ApkParser目錄下,實例化時只需要傳入apk的全路徑名


$apkParser = new \ApkParser\Parser($file->getPathname());

 

##以下為取得apk中的參數


$apkParser->getManifest()->getPackageName(); //获取apk包名
$apkParser->getManifest()->getVersionCode(); //获取apk版本号
$apkParser->getManifest()->getVersionName(); //获取apk版本名称

$apkParser->getManifest()->getMinSdk(); // 支持最低sdk的平台
$apkParser->getManifest()->getMinSdkLevel(); // 支持最低sdk的版本
$apkParser->getManifest()->getTargetSdk(); // 目标Sdk的平台
$apkParser->getManifest()->getTargetSdkLevel(); //目标sdk的版本

$labelIndex = $apkParser->getManifest()->getApplication()->getLabel(); //获取应用名称的索引
$apkParser->getResources($labelIndex); //获取应用名称的数组

$iconIndex = $apkParser->getManifest()->getApplication()->getIcon();//获取图标的索引
$icons = $apkParser->getResources($iconIndex); //获取图标路径的数组
file_put_contents('保存icon图标的全路径名', stream_get_contents($apkParser->getStream($icons[0]))); //把第1个图标转为流后保存到相应的目录
個人使用這個控制項時遇到點問題,就是應用名稱數組,我怎麼知道應用名稱對應的語言?因為應用名稱中可能有簡體中文、繁體中文、英文等。我怎麼能取出簡體中文的應用名稱呢?

相關教學:

PHP影片教學#

以上是巧用ThinkPHP5.1和 tufanbarisyildirim 快速解析apk的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除