了解build.gradle

              每个使用Android Studio编写Android工程的时候,都会好奇是怎么把工程编译成apk的,这就不得不说说一个比较重要的编译工具gradle,而工程里面能遇到gradle的文件也比较多。

文件settings.gradle里面是依赖的module,工程有几个module就有几个,比如:

include ':app', ':testaar'。这个就是有apptestaar两个module

文件local.properties里面是工程的sdkndk的路径,比如:sdk.dir=D\:\\Software

\\android-sdk-win

文件gradle.properties里面是一些gradle里面用到的变量,常用的有设置网络代理和设置

jvm的参数等。比如:org.gradle.jvmargs=-Xmx2g。如果设置了代理就可以下载gradle的依赖。

文件build.gradle是最复杂的,内容比较多,工程最外面的build.gradle是适用整个

工程的配置。单个module里面的build.gradle是适用该module的设置,下面依次说明。


   这个是添加gradle的配置,也就是说这是给gradle使用的。repositories里面的配置参数是一个仓库的地址,当gradle的配置和本地不匹配的时候,就会从这个仓库里找一个匹配的版本去下载。dependencies是gradle的编译工具版本,如果版本不合适,也会去重新下载。第一次使用因为没有这些配置,默认都会去下载的,后面如果别人工程和你的配置不一致,你可以参考你第一次下载的配置,修改配置,这样就不用重新去下载配置了。


   这句话表明这个module是一个纯android应用,对应的还有另外一个’com.android.library’,代表的意思这个module是一个库;当然如果不确定是那个类型,可以偷懒写’android’也是可以的。其实还有其他的插件,比如写在最后的’java’,就表示引入了gradlejava插件而不是android的了。


   这个和buildscript很类似,但是含义差别很大。这个是供工程使用的配置,而不是给gradle使用的。repositories指定的就是存放jar或者aar等库文件的位置,一般都是工程的libs里面;dependencies是需要编译打包到工程里面的必要库文件,第一句是把libs里面的所有jar文件打包进去;后面是把一些需要的aar文件打包。

android{}这个是对Android工程编译说明,可编程性很强,所以内容也比较多。


   signingConfigs是签名相关说明,工程可以有多个签名,常用有debug和release两种,这里给的是release的。里面的四个参数分别表示签名文件名,签名文件密码,签名的key别名,签名的key密码。不过有些文章说为了密码安全,简易把这些写到一个配置文件里面,然后把配置文件不加入版本控制里面,这样就不是所有开发者都知道这个密码,个人感觉没必要,正直!


   这个是编译的sdk版本和编译工具的版本。


   打包的时候把列出来的文件排除在外,这里是指把所有.apk的文件都不打包。


   dex选项,可以设置一些dex的属性,这里是设置了最大堆大小。


   这个是编译时程序分析工具的设置,有很多属性,这里的abortOnError是指遇到错误是否会停止编译,设置成false意思就是遇到错误依然会继续编译。


   这个是android工程的默认配置,applicationId是程序的ID,和包名有区分;signingConfig是使用的签名,后面参数是release那个签名;versionCode和versionName是版本信息,这里采用的是从一个自定义函数里面获取的,获取路径是AndroidManifest.xml里面定义的版本号和版本名称。自定义函数就是调用系统的方法,如下图。




   sourceSets是指定代码或者资源,库文件等源的位置。可以通过设定不同的源,来编译不同的包。注意里面的写法,可以有很多种。


    buildTypes是构建类型,可以同时构建多个渠道包,这里写了debug和release两种类型,其中有一些参数,signingConfig是签名相关,debuggable是否打开调试开关,minifyEnabled是否打开混淆,shrinkResources是否删除未使用资源,如果设为true,在没有资源需要减少时反而增加了size。


   productFlavors是构建不同渠道的包,里面可以自己添加渠道和渠道的一些信息。

参考的文章有:

http://avatarqing.github.io/Gradle-Plugin-User-Guide-Chinese-Verision/index.html

http://ask.android-studio.org/?/article/40






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章