美文网首页
关于APK的一些知识点

关于APK的一些知识点

作者: 浩仔_Boy | 来源:发表于2021-01-21 18:24 被阅读0次

自己学习笔记,仅供自己参考,如有不对欢迎指正

一、Android项目中都包含哪些资源?

资源文件大致分为三类

1、value文件资源

  • string
  • Color
  • Theme
  • dimen
  • Style

2、drawable文件资源

  • 图片
  • shapeListDrawable
  • LayerDrawable
  • ShapeDrawable
  • ClipDrawable

2、ColorStateList资源

根据状态改变drawable对象

二、apk打包流程

1.通过打包资源的工具是aapt,将资源文件生成R.java文件
2.通过aidl工具,处理aidl文件生成Java文件
3.编译项目源码,生成.class文件,放置位置在bin/classes下
4.通过dx文件将class和三方库library转换成dex文件
5.没有编译过的资源直接打包进app,应用层通过文件名获取资源
6.通过appbuilder工具,将dex文件和资源文件打包生成apk
7.对apk文件进行签名
8.对正式版apk进行对齐处理,主要实现是调整资源文件距离文件其实偏移4字节整倍数。起作用是内存映射访问apk文件速度更快,减少运行内存的使用

三、apk解压后都包含哪些资源

  • assets 工程自身和三方库的assets文件
  • lib 所有的so文件
  • res 工程资源文件都在这,values除外,因为已经编译到resources.arsc之中
  • resources.arsc 资源文件索引
  • classes.dex 虚拟机的执行文件
  • AndroidManifest 做组建查找
  • META-INF 签名、信息描述等

四、R文件打包后生成的文件是哪种?

R.java文件

五、Dex文件结构

  • 1.头文件
    存储了文件的概要信息,包括文件大小、版本、校验信息、string_ids的文件位置等等
  • 2.索引区
    string_id string索引
    type_id 类型索性
    field_id 域的索引
    method_id 方法的索引
  • 3.数据区
    class_defs 类的定义区
    data 数据区
    link_data 链接索引区

六-Android为何会有65535的限制

我们的源码会被编译成.dex文件,每一个dex中代码可被调用的总数最大是65536。

可以设置对dex进行拆包,分为主dex包(classes.dex)和辅助dex包(classes2.dex 和 classes3.dex 等),所以推荐我们使用组件化,除了解耦业务逻辑,还能防止64k问题的发生。

七。Dalvik和ART的区别

Dalvik中,每次打开应用的时候,Dalvik会读取这个classes.dex并解释执行。
ART中,当你安装apk的时候,这个classes.dex文件就会被转换成本地机器码——后缀为oat的文件,以后打开应用时直接读取oat文件执行即可。
ART相对于Dalvik,执行效率更快,但是需要更多空间,apk的安装速度也变慢了。

相关文章

网友评论

      本文标题:关于APK的一些知识点

      本文链接:https://www.haomeiwen.com/subject/oludzktx.html