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 \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,非常感谢。
> 个人博客网址: https://colablog.cn/
如果我的文章帮助到您,可以关注我的微信公众号,第一时间分享文章给您

ThinkPHP5.1 + tufanbarisyildirim 解析apk的更多相关文章
- Java环境解析apk文件信息
概述:Java解析apk文件,获取apk文件里的包名,版本号,图标文件等; 功能:可以提供给windows和linux平台使用; 原理:利用aapt.exe或者aapt这些anroid平台解析apk文 ...
- c# 借助cmd命令解析apk文件信息
借助aapt.exe文件 aapt.exe 解析apk包信息cmd命令: aapt dump badging *.apkaapt d badging *.apk >1.txt(保存成1.txt文 ...
- 基于 jq 实现拖拽上传 APK 文件,js解析 APK 信息
技术栈 jquery 文件上传:jquery.fileupload,github 文档 apk 文件解析:app-info-parser,github 文档 参考:前端解析ipa.apk安装包信息 - ...
- android 利用 aapt 解析 apk 得到应用名称 包名 版本号 权限等信息
在上传各大市场时发现 apk 上传后能自动解析出应用名称.包名.版本号.使用权限等信息,所以就研究了一下 1 直接解压 apk 解析 AndroidManifest.xml 是不行的,因为 apk ...
- python3 解析apk图标
有两处值小点,一是如何解压缩,另一个是如何写文件,第二点上我找的是phthon2的代码,一直写文件的时候报不是字符串的问题,将打开方式加上"b“的模式搞定 print文件出来直接删除了,原因 ...
- 使用aapt解析apk,得到package内容
$cmd = C('APPT_PREFIX'); exec(C('APPT_PREFIX') . UPLOAD_RES_PATH . $up_az, $out, $return); && ...
- thinkphp5源码解析(1)数据库
前言 tp5的数据库操作全部通过Db类完成,比较符合国人的习惯,比如简单的Db::query().Db::execute(),还有复杂的链式操作Db::where('id=1')->select ...
- thinkphp5源码解析(2)控制器
入口文件index.php: // 定义应用目录 define('APP_PATH', __DIR__ . '/../application/'); // 加载框架引导文件 require __DIR ...
- Java解析apk、ipa图标,包名,应用名称,版本号
参看:http://blog.csdn.net/moyanxuan_1993_2_24/article/details/53612001
随机推荐
- 自研网关纳管Spring Cloud(一)
摘要: 本文主要从网关的需求,以及Spring Cloud Zuul的线程模型和源码瓶颈分析结合,目前最近一段时间自研网关中间件纳管Spring Cloud的经验汇总整理. 一.自研网关纳管Sprin ...
- 由HashMap哈希算法引出的求余%和与运算&转换问题
1.引出问题 在前面讲解HashMap 的源码实现时,有如下几点: ①.初始容量为 1<<4,也就是24 = 16 ②.负载因子是0.75,当存入HashMap的元素占比超过整个容量的75 ...
- 使用java检测网络连接状况
windows中可以通过在cmd中使用ping命令来检测网络连接状况,如下: 网络连接正常时: 网络未连接时: 在java中可以通过调用ping命令来判断网络是否连接正常: package modul ...
- Android监测手指上下左右滑动屏幕
在开发android程序时,有时会需要监测手指滑动屏幕,当手指朝上下左右不同方向滑动时做出不同的响应,那怎么去实现呢? 利用Android提供的手势监测器就可以很方便的实现,直接上代码(已测试通过) ...
- Postman用法简介
转自:http://blog.csdn.net/flowerspring/article/details/52774399 Postman用法简介 转载 2016年10月10日 09:04:10 10 ...
- java集合框架之ArrayList
参考http://how2j.cn/k/collection/collection-arraylist/363.html 使用数组的局限性 一个长度是10的数据:Hero[] heroArr=new ...
- [Usaco2015 Jan]Grass Cownoisseur 图论 tarjan spfa
先缩点,对于缩点后的DAG,正反跑spfa,枚举每条边进行翻转即可 #include<cstdio> #include<cstring> #include<iostrea ...
- BZOJ_3307_雨天的尾巴_线段树合并+树上差分
BZOJ_3307_雨天的尾巴_线段树合并 Description N个点,形成一个树状结构.有M次发放,每次选择两个点x,y 对于x到y的路径上(含x,y)每个点发一袋Z类型的物品.完成 所有发放后 ...
- 字典---python
Python 字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包 ...
- Eureka的功能特性及相关配置
1.服务提供者1.1服务注册服务提供者启动时,会通过rest请求的方式将自己注册到Eureka Server上,同时带上了自身服务的一些元数据信息.Eureka Server接收到请求后,将元数据信息 ...