从事Android开发三年,但对build.gradle不甚了了,故而写一篇关于新手向的build.gradle文章,做下笔记。
首先
一个HelloWorld项目,在其build.gradle中,有plugins、android、dependencies。其中比较重要的是android和dependencies。
关于plugins
有两种plugin的写法:
1.早期版本apply plugin: 'com.android.application'
2.如今版本
plugins {
id 'com.android.application'
}
这两种方式效果都是一样的,将当前module作为application运行,而不是library。
library?
当项目模块化后,项目会有主次之分,如下图所示,
点击app,带绿色Android机器人的只有一个app,而假如common的plugins也改为application的话,带绿色机器人的就有两个了,分别是app和common,一旦点击右边的三角箭头(run),app和common将会在桌面创建各自的图标。而中间框表示当前正在使用的设备。
当然有时候,你会发现三角形run按钮置灰,绿色机器人改为Edit Configuration no Module,不用慌,这种问题,往往不仅仅是你会遇到,搜一下,根据提示操作就行了。
一个项目合理规划的话,会有多个library。一方面是为了协同开发,大家各自负责各自的代码;另一方面,则为了方便开发--你可能记得住业务,但你不一定会记得上百个.Java、.kt文件,将不同业务的代码放置在不同module下,查找快速(原谅多年开发只开发出了这个功能)。
关于android
| | | | --- | --- | | compileSdkVersion | compileSdk | | minSdkVersion | minSdk | | targetSdkVersion | targetSdk |
其中compileSdkVersion和compileSdk是一样的,只是不清楚到底是哪个版本修改了写法。并且,build.gradle(Project)和setting.gradle也同样有了新的变化。
build.gradle(Project)和setting.gradle先挖个坑,看有没有机会更吧。
而关于这三个的,找到一篇文章,解说的该比我好。
关于Android SDK里的compileSdk、minSdk、targetSdk、buildTools、Tools、Platform-tools - 简书 (jianshu.com)
目前我使用的配置是resources.getColor(R.color.black)
源码:
这一段代码,其中getColor带有删除线,带有注解
@Deprecated表示弃用,代替方案是
getColor(int, Resources.Theme)。目前该方法只是被弃用,还不清楚什么时候不能用。
打开SDK Manager,其中SDK Platforms便是Android版本和所对应的version。 而SDK Tools,是在原来的写法中,compileSdk是编译版本,buildTools则是开发工具的版本,在SDK Tools中下载。如下图,
选择的版本是30.0.2,提示可以换成30.0.3,因为Android SDK Build-Tools下载的最高版本便是30.0.3。但最近新建项目在build.gradle中没有这个字段了。
versionCode和versionName
这个是app的版本,versionCode 1是数字版本,例如数据库更新(新增字段),需要将数字版本+1,而versionName,则是版本名称。
最后则是dependences
依赖,任何一个Android应用都少不了依赖库,尤其是优秀的依赖库。 比如blankj的AndroidUtilCodes工具库
"com.blankj:utilcodex:1.31.0"
郭霖大神的权限依赖库PermissionX
"com.guolindev.permissionx:permissionx:1.7.1"
还有像网络请求的okhttp+retrofit。
依赖库的添加方式
1. File->Project Structure->Dependencies->Add Dependency
箭头1所指的便是当前项目所有的modules,如图所示的项目,当前没有其他模块,所以Modules一栏只有app一项。
红色框所标记出来的是app所依赖的所有库。
箭头3是添加依赖库。有两种添加方式,Library Dependency和JAR/ARR Dependency。
点击Library Dependency,如下所示,输入com.blankj:utilcodex:1.31.0,下面便是搜索到的结果。
点击ok便为app项目添加了com.blankj:utilcodex:1.31.1版本,右边显示,在Maven Central、Google和JCenter三个仓库中未找到1.31.0版本,但找到了1.31.1版本。
然后在build.gradle的dependencies中多了一行代码
红线标记的代码块,表示我们已经成功添加了依赖库。
而另一种方式,JAR/ARR Dependency。一般常用在百度地图、百度语音之类的依赖上。例如百度地图,需要先下载jar或者so文件,把文件拷贝至app/libs目录下(如果没有,则建一个文件路径),然后在点击JAR/ARR Dependency添加依赖。
2.复制老项目的依赖
这种是最方便省事的--老项目有完整的框架和依赖。
不过这种方式有一点需要注意的是,老项目所依赖的库,大多都是老版本的。例如blankj的26版本,其中手机号的判断就没有31版本的全面。
当然也可以将依赖升级,将
com.blankj:utilcodex:1.26.4
升至
com.blankj:utilcodex:1.31.1
,而其中build可能会出现错误,这又是另一个话题了。
3.github
最大的同性交流网站不是吹的。
在搜索软件中输入关键字 github + AndroidUtilCode,打开网页,如图所示,
需要注意的是红色箭头标记和红色方框框出来的部分。
红色箭头表示当前项目是Blankj大神开发的AndroidUtilCode项目。
最右边的框是这个项目的成就,这个项目被31.5k个用户标星,被1.2k个用户watching,恐怖如斯。
然后是中间的红框,表示这个文件或者文件夹最后更新时间,可以看出,6天前这个刚刚发布了修改了一些bud,并成功发布了v1.31.1。
同样的方式搜索Arouter阿里路由框架,发现这个项目已经有六年了,同样也有16个月未更新了(2022.10.20)。
第三种依赖添加方式也是最常见的方式。而善用github能给开发带来极大的助力。
比如,产品有一个需求,城市选择,自己写的话,一天下来可能还全是bug,但github上有完整的依赖控件,跟着readMe文件操作,一个小时一个三级联动的城市选择控件就ok了。
当然,github也不是没有缺点的,不对,登不上去不是github的缺点.....
本篇只是浅浅涉略build.gradle的三个部分,而build.gradle可不仅仅只有这些。还有依赖冲突,甚至build.gradle(Project)部分都还未触及。
路漫漫其修远兮~~~