zoukankan      html  css  js  c++  java
  • ThinkPHP5.1 + tufanbarisyildirim 解析apk

    摘要

    对于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 ApkParserParser($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,非常感谢。

    > 个人博客网址: https://colablog.cn/

    如果我的文章帮助到您,可以关注我的微信公众号,第一时间分享文章给您

    ![微信公众号](http://qiniuyun.colablog.cn/%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg)

  • 相关阅读:
    java虚拟机学习-JVM调优总结-基本垃圾回收算法(7)
    学习笔记-人脸识别第三讲
    小波变换基础理论
    小波变换图像分解
    图像的纹理区域分类
    matlab中图片数据类型转换uint8与double
    八板体-器乐曲
    【歌词】金蛇狂舞-许笑薇-童声
    【歌词】金蛇狂舞-龙飘飘
    NLM算法
  • 原文地址:https://www.cnblogs.com/Johnson-lin/p/10177328.html
Copyright © 2011-2022 走看看