小伙伴们,大家好。上篇文章中,我已经介绍了Android10_Launcher3源码的下载和编译,今天我们来分析一下根目录下的build.gradle文件,我会选择这个文件中关键的部分,一一讲解,理解了这个文件,我们就能对整个Launcher3工程有一个全面的了解,为后续的源码分析,扫清障碍。
1.这一行是定义了一个变量,变量值是当前工程的根目录
2.看下边的截图,第一行,我们都知道,表示这个
module是一个Android application;那么
下边这一行,是什么意思呢,这一行表示,引用google的
protobuf插件,关于这个插件的介绍,给你附上官网的链接
https://developers.google.com/protocol-buffers
简单说,Protobuf是google推出的数据交换格式,相比xml、
json主要优势在传输数据量更小、解析更快,而且跨平台。
3.看下边的截图,第一行定义了app和recents两种flavor,
然后,在下边的productFlavors内部,有好多个用大括号
括起来的子节点,仔细看子节点的内部,都有一个属性
dimension,属性值就是第一行定义的那2货。不同
dimension的子节点,两两组合,就能形成2种编译类型了:
aospWithoutQuickStep 和 l3goWithoutQuickStep。
所以,明白了吧,这一段的功能,就是为了实现将代码编译成
不同的类型,那些分渠道打包,也是这样实现的。
4.去除了release编译类型,WithQuickstepIconRecents
只对l3go有效
5.指定了所有编译类型共有的源码和资源目录,也
指定了proto文件所在的目录,并且debug版本会
合并'AndroidManifest-common.xml' 和
"AndroidManifest.xml"
6.指定了aosp和l3go两种编译类型,对应的差异目录
7.指定了protobuf文件编译生成的java package。
最终生成的java文件,所在的目录如下
这里顺便提一下,上篇文章中,讲到编译过程中
有个异常
其实就是potobuf版本自身存在的bug,只需要将
gradle.properties中的
protobuf-gradle-plugin:0.8.7
改成
protobuf-gradle-plugin:0.8.8
以后编译就不会报这个异常了。
到此,我们把整个build.gradle文件讲解完了。
build.gradle文件是整个工程的灵魂,理解了它,我们
就对整个Launcher3的工程目录有了大致的了解,对它
编译过程中做了些什么,也都清楚了。下一篇文章,我
将来捋一捋Launcher3的启动过程。
领取专属 10元无门槛券
私享最新 技术干货