android简单打包流程(Android打包过程)
android简单打包流程(Android打包过程)2,res 没有编译的资源文件1,META-INF 签名文件夹3,uncompiled resources 没有被编译过的文件4,AndroidManifest.xml 清单文件解压apk目录
先来一张图
从图中可以看出,项目经过编译后由4个部分组成
1,.dex files .dex文件
2,resources.arsc resource文件
3,uncompiled resources 没有被编译过的文件
4,AndroidManifest.xml 清单文件
解压apk目录
1,META-INF 签名文件夹
2,res 没有编译的资源文件
3,AndroidManifest.xml清单文件
4,classes.dex dex文件
5,resources.arsc res文件
其中META-INF文件夹中有3个文件
图中绿色部分是打包的过程,可以看到有6个步骤
1,aapt过程
使用aapt来打包R.java和resources.arsc和res文件
res文件有9种目录
-
-animator 属性动画
-
-anim 补间动画
-
-color 颜色
-
-drawable 这里资源以xml或bitmap图片资源保存,这里会对图片进行优化比如32位的png无损压缩到8位的png格式
-
-layout 布局文件
-
-menu 菜单xml文件
-
-raw 文件被原封不动打入进去,但会分配一个id,可以通过id来找到
-
-values 一些简单的资源文件
-
-xml 一些配置信息
resources.arsc 可以理解成一个资源索引表,通过id可以找到项目中的资源
2 aidl过程
如果项目包含aidl在这个阶段生成对应的java 接口文件
3 java Compile阶段
编译生成R.java文件,java接口,java源文件编译成.class文件
4 .dex过程
将上诉java compile过程产生的.class文件和第三方编译产生的.class文件通过dx工具生成.dex文件
5 apkbuilder阶段
将.dex文件 resources.arsc. res文件(资源目录原封不动文件和编译后的文件)以及其他文件( asset等)一起打包生成apk文件
注意:
res/raw和assets的相同点:
1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。
res/raw和assets的不同点:
1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹
6 Jarsigner
对apk包进行debug或release签名
7 zipaligin
对签名后的apk进行对齐处理,简单理解为压缩apk