#.Android项目结构
###.总的结构
###. /src/main下的结构
res: 存放各类资源
res/drawable:理论上对应低分辨率图片,但一般此文件夹并不放图片文件,图片文件放在下面两个文件夹中。
一般把自定义的xml图形文件放在此文件夹中。
res/drawable-xhdpi:图片资源,对应高分辨率。高分辨率屏幕优先从此取资源。
res/drawable-xxhdpi:图片资源,对应超高分辨率。高分辨率屏幕优先从此取资源
#.Android编译打包流程
apk打包过程,无非是把一大堆物料 分别进行处理、捆绑,最后绑成一个大包的过程。(实际上又能有哪些物料呢,不过是资源文件和一堆命令而已。)
apk安装的过程,又是把这个包里 的那些处理过的东西 重新解开,让系统取出需要的东西,做相应处理。在程序执行过程中,用到啥就去调取啥,无论是资源文件 还是 那一坨坨存着指令的文件。
因此,打包过程就是那一堆处理过程的集合。
##.基本流程示意图
流程简要概括:
1.资源文件经aapt工具编译生成[R.java]和[编译后资源文件],.aidl文件经aidl工具编译生成对应的.java接口。然后这两部生成的.java文件和工程源代码.java文件,经java编译器编译成.class文件。
(.aidl文件的作用实际上是生成对应的接口代码文件,例如生成.java接口的代码。这样可以使用同一个.aidl文件在客户端/服务端生成配套的接口代码。)
2.上面的.class文件与第三方库中的.class文件,经dex工具处理成.dex文件。
3.上面的.dex文件与步骤1中生成的[编译后资源文件],再加上其它剩余文件,经apk打包工具,打成apk包。
4.以上apk包经签名工具签名,生成 [签名后apk包]。
5.经对齐工具做对齐处理,生成 [签名对齐后的apk包],也就是最终包。
##.详细流程示意图
参考剪藏:
一张图看懂Android编译流程 - 简书
Android编译流程和Gradle使用 - 简书
(声明:部分图片获取自网络,这里只是用于学习分享,侵删!)