Android新手开发指南-build.gradle篇(一)

1,073 阅读5分钟

从事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?

当项目模块化后,项目会有主次之分,如下图所示,

image.png

其中,app是application,文件夹右下角有一个圆点,而common是library,右下角是一个柱状图。

image.png

点击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)

目前我使用的配置是 image.png 一般情况下,compileSdk和targetSdk是一致的。而minSdk则越小越好。

举一个例子,

resources.getColor(R.color.black)

源码:

image.png 这一段代码,其中getColor带有删除线,带有注解@Deprecated表示弃用,代替方案是 getColor(int, Resources.Theme)。目前该方法只是被弃用,还不清楚什么时候不能用。

而我们一般说的Android10,Android11和如今刚发布的Android13,如果想要在App中应用,则需要修改targetSdk所对应的数字。

打开SDK Manager,其中SDK Platforms便是Android版本和所对应的version。 而SDK Tools,是在原来的写法中,compileSdk是编译版本,buildTools则是开发工具的版本,在SDK Tools中下载。如下图,

buildtools0.png

image.png 选择的版本是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

image.png 箭头1所指的便是当前项目所有的modules,如图所示的项目,当前没有其他模块,所以Modules一栏只有app一项。

红色框所标记出来的是app所依赖的所有库。

箭头3是添加依赖库。有两种添加方式,Library DependencyJAR/ARR Dependency

点击Library Dependency,如下所示,输入com.blankj:utilcodex:1.31.0,下面便是搜索到的结果。

image.png 点击ok便为app项目添加了com.blankj:utilcodex:1.31.1版本,右边显示,在Maven Central、Google和JCenter三个仓库中未找到1.31.0版本,但找到了1.31.1版本。 然后在build.gradle的dependencies中多了一行代码

image.png 红线标记的代码块,表示我们已经成功添加了依赖库。

而另一种方式,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,打开网页,如图所示,

image.png 需要注意的是红色箭头标记和红色方框框出来的部分。

红色箭头表示当前项目是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)部分都还未触及。

路漫漫其修远兮~~~