作为Android开发,我们几乎每天都在和builg.gradle打交道,但是你真的知道build.gradle里的每一行代码有什么用吗?以及builg.gradle到底有哪些作用?本文旨在全面的向大家介绍builg.gradle的作用与使用方法。
在我们新建项目时,Android Studio 会自动为我们生成两个build.gradle文件,一个位于根目录,一个位于App文件夹下,下面是gradle文件的构成图:
该gradle文件是定义在这个工程下的所有模块的公共属性,它默认包含两个个方法:
buildscript 方法是定义了全局的相关属性,repositories 定义了 jcenter 作为仓库。一个仓库代表着你的依赖包的来源,例如 maven 仓库。dependencies 用来定义构建过程。实际开发时,缺少某些仓库来源是会出错的,我记得还有一次是google()、jcenter()两个顺序导致的问题,具体记不清了,以后再遇到再更新~
allprojects 方法可以用来定义各个模块的默认属性,你可以不仅仅局限于默认的配置,未来你可以自己创造 tasks 在 allprojects 方法体内,这些 tasks 将会在所有模块中可见。
以上就是我们最常见的常规配置,但是往往我们都有更复杂的需求,下面简单介绍几个常见的问题及其解决代码。
一般情况下,默认配置生成的 apk 文件名叫做app-debug.apk。但是我们在开发中为了方便最好是要对这些 apk 进行区分命名的,下面代码就是为我们生成 apk 进行了合理的命名。例如:HelloWorld_1.0_debug.apk,由 APP 名称 + 版本号 + 签名名称 组成。
当项目中依赖的第三方库越来越多时,有可能会出现两个依赖库中存在同一个(名称)文件。如果这样,Gradle 在打包时就会提示错误(警告)。那么就可以根据提示,然后使用以下方法将重复的文件剔除,比较常用的是通过 exclude 去除重复的文件,例如:
这个配置是经常会使用到的,通常在适配多个渠道的时候,需要为特定的渠道做部分特殊的处理,比如设置不同的包名、应用名等。场景:当我们使用友盟统计时,通常需要设置一个渠道ID,那么我们就可以利用productFlavors来生成对应渠道信息的包,如:
如果你看到了这里,觉得文章写得不错就给个赞呗!欢迎大家评论讨论!如果你觉得哪里值得改进的,请给我留言。一定会认真查询,修正不足,定期免费分享技术干货。感兴趣的小伙伴可以点一下关注哦。谢谢!