欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ThinkPHP5.1 + tufanbarisyildirim 解析apk

程序员文章站 2022-05-02 23:43:51
摘要 对于apk,我可以说只会安装,并不知道其中有什么内容需要记录下来。这次公司做一个关于电视机顶盒的项目。对于这个陌生的项目,刚开始真是一脸懵逼,完全不知道如何下手。 因为这类的项目完全没有接触过,而且网上搜一下也看不到这类的开发流程和需求。还好公司有个老司机带带我。废话不多说,搞起来。 TP5获 ......

摘要

对于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个图标转为流后保存到相应的目录

 

个人使用这个控件时遇到点问题,就是应用名称数组,我怎么才能知道应用名称对应的语言呢?因为应用名称中可能有简体中文、繁体中文、英文等。我怎么才能取出简体中文的应用名称呢?

emmmm,如果各位使用过的大佬知道的话,可否在评论区写下。非常感谢。

 

最后,感谢各位大佬赏脸看我的博客。如果对文章还有什么可以改进的地方,请务必在评论区写下,或至邮件到821312534@qq.com,非常感谢。