解析包出现问题
导读
解析包出现问题怎么办? 开发工程师为你一一讲解产生这个问题的原因.
本篇文章将围绕产生 ‘解析包出现问题’进行分析并说明产生的原因,
了解 ‘包’是什么;
哪些原因会导致出现问题.
让我们开始吧.
程序包
‘包’是什么首先我们要了解‘包’是什么,‘包’是程序包的意思,就是开发人员在开发完毕程序之后,通过IDE Archive出来的产物,通过系统安装程序包可以扩展系统的功能.因此包是开发人员开发出来的软件,是供用户使用的程序.
一个‘包’ 是有严格的文件结构要求的,拿Android应用程序为例:
- 名为AndroidManifest.xml 的清单文件; 是概述整个应用程序提供什么样的服务、什么样的页面,以及程序使用系统什么硬件权限等等信息
- src 文件夹 存放程序的主体逻辑代码
- res 文件夹存放资源文件(图片、视图)
等等一系列需要遵循的规则.
程序出错
产生解析失败的原因了解完包是什么这个问题之后,我们来说一下产生的原因都有哪些;简单分一下类型:外部原因(不可抗力因素)、内部原因(程序员的锅).我们来以搭载Android操作系统的设备为例,来分析一下原因.
- 下载的程序包不完整 (外部原因)
出现这个问题的概率比较低,如今的网络情况不能保证覆盖到每一个地方,但是可以完整地下载一个程序包还是比较可以确保的;
但是也不可忽视的是下载的资源有可能因为网络中断的原因导致下载的文件不完整.
- 程序包被恶意篡改(外部原因)
这种情况可能会发生在服务器端,也有可能发生在用户设备端.
在服务器端被篡改:
我们在电脑上操作任意一个文件将后缀改成.apk;来模拟程序包被篡改的过程,然后将修改后的.apk文件发送到自己的手机上,可以看到 手机是识别了被修改之后的文件为一个安装包文件的,双击之后也可以调起系统的安装器来安装,这时就会出现 解析包时出现错误. (ps:因为它就不是一个包)
在用户设备端:
最典型的是我们在某信中发送.apk时 都会默认被加上.1的后缀.
- 清单文件中声明应用版本高于当前系统版本(内部原因)
因为程序包的运行依赖于更高的系统版本,所以这个时候即使下载了安装包,也可能会出现 解析包时出现错误 的错误提示,导致安装不上.不过现在这种情况都被更友好的提示语给替代,比如说当前程序需要较高的系统版本支持,不可安装等等容错方式.
- 包名不受当前系统支持(内部原因)
结语Android应用程序的包名大写 在SDK 25及以上版本可以安装 SDK 25及以下版本不行.所以这也是构成错误的一个因素.
SDK 25 对应的安卓系统版本就是Android 7.1
发生解析包出现问题的情况是还是挺多了,其中包含了开发者的问题,也包含了各种不确定因素的问题,因此为了保证安装包的正常使用,还是请下载官方提供或者正规渠道获取的应用程序,既能保证使用,也能保证安全.
Created By Henry 共同学习 共同进步.