安卓开发-配置文件详解

最近在学习 Android 开发,使用 Android Studio 做安卓开发一般会涉及到下面几个文件,如下我逐一标了数字,然后进行详细的说明。

1处

.gradle 和 .idea 目录是 AS 这个 IDE 自动生成的文件,我们不用不管。

2处

最外层目录下的 setting.gradle 文件

用于配置子工程(也可以说是 Module ),新创建空项目,setting.gradle 文件只有一行:

如果是多个子模块,则是类似于:

3处

最外层目录下 local.properties 文件

用于指定本机中 Android SDK 的路径,通常是内部生成的,我们并不需要修改,除非你本机的 Android SDK 路径发生了变化。

比如我的 Mac 上该文件内容是:

4处

最外层目录下 gradle.properties 文件

这个文件是全局的 gradle 配置文件。

我的 Mac 上该文件只有一行内容:

5处

最外层目录下 build.gradle 文件

这个是项目全局的 gradle 构建脚本。会配置 gradle 脚本执行所需要的依赖库项目本身所需要的依赖库

  • buildscript 里面是 gradle 脚本执行所需依赖,分别是对应的 maven 库和插件库。
  • allprojects 里面是项目本身需要的依赖。

当我们不确定,且引入第三方的时候,不确定是项目所需依赖还是 gradle 脚本执行时所需依赖的时候,推荐在 buildscript 和 allproject 里面同时添加。

6处

gradle/wrapper 目录下的 gradle-wrapper.jar 和 gradle-wrapper.properties 文件

“wrapper”顾名思义就是“包装”的意思,对 gradle 进行了包装。

gradle-wrapper.jar 是 Gradle Wrapper 的主体功能包,在Android Studio安装过程中产生 gradle-wrapper.jar(默认安装目录C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle\wrapper\gradle\wrapper\gradle-wrapper.jar)。然后每次新建项目,会将 gradle-wrapper.jar 拷贝到你的项目的 gradle/wrapper 目录中。

gradle-wrapper.properties 文件主要指定了该项目需要什么版本的 Gradle,从哪里下载该版本的 Gradle,下载下来放到哪里,如下是我 Mac 上的配置内容:

gradle-wrapper.properties 文件

GRADLE_USER_HOME :一般指 ~/.gradle

zipStoreBase 和 zipStorePath 组合在一起,是下载的 gradle-7.4-bin.zip 所存放的位置。zipStorePath 是 zipStoreBase 指定的目录下的子目录。

distributionPath :GRADLE_USER_HOME 和 distributionPath 一起指定了下载的 gradle-7.4-bin.zip 解压后的存放位置,如下是我的 Mac 上位置:

distributionUrl :会去这个地址下载 gradle-7.4-bin.zip 。

注意:最外层目录下 build.gradle 文件中指定了 gradle 的插件版本:

gradle-wrapper.properties 文件中指定了 gradle 的版本:

gradle 的插件版本号要和gradle版本号相对应:

Android Gradle 插件和 Android Studio 兼容性

Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件添加了几项专用于构建 Android 应用的功能。下表列出了各个 Android Studio 版本所需的 Android Gradle 插件版本:

比如我的 Android Studio 版本是 2021.3.1,如果我配置的 gradle 插件版本太低,Android Studio 会提示我修改:

7处

app 目录下的 proguard-rules.pro 文件

用于配置代码混淆规则。

8处

app 目录下的 build.gradle 文件

compileSdkVersion

编译安卓源码所使用的 Android sdk 版本,在编译源码时会从该级别 SDK 中寻找要导入的类和函数。

minSdkVersion

在 AS 中新建项目时会需要指定该版本号。意思是“项目最低兼容的 Android 系统版本”,表示 APP 可以支持的 Android SDK 的最早版本,小于该版本的 Android 系统上不保证 APP 能正常安装和运行。

targetSdkVersion

该值会告诉安卓应用是为哪个API级别设计的。

targetSdkVersion指定的值表示你在该目标版本上已经做过了充分的测试,系统将会为你的应用程序启用一些最新的功能和特征。比如, Android 6.0 系统引用了运行时权限这个功能,如果你将targetSdkVersion 指定为23或者更高,那么系统就会为你的程序启动运行时权限。如果你将 targetSdkVersion 指定为22,那么就说明你的程序最高只在 Android 5.1系统上做过充分的测试,Android6.0系统中引入的新功能就不会启动了。

说通俗一点:比如你将 targetSdkVersion 设置为22,涉及某个(或某几个)权限,你直接在 mainfest中配置权限即可,然后在java代码中进行获取权限后的逻辑处理即可。
但如果你将 targetSdkVersion 设置为23或更高,你除了在 mainfest 中配置权限外,还需要在 java 代码中判断用户是否同意权限,如果同意,执行什么业务操作;如果不同意,执行什么业务操作(一般是提示某某权限被拒后,某某功能无法正常使用).如果你只在mainfest中配置了权限, targetSdkVersion 又大于等于23, Java代码中不进行运行时权限的代码,你的应用程序就直接报错了。

请一定在更新 targetSdkVersion 之前做测试!尤其是国产手机各种厂商定制。并且在开发过程中,还有一种可能,产品经理要求你在运行时权限这里有这样的需求:用户拒绝某项权限后,可以直接跳到修改权限的界面(即设置/权限管理这里),或者用户第一次拒绝后,用户第二次操作这个按钮或界面时,再次出现权限的提示。

本引用来自 https://blog.csdn.net/gaolh89/article/details/79809034

一般来说 compileSdkVersion 和 targetSdkVersion 配置值是一样的。


新版 AS 配置变化

(1)将最外层 build.gradle 中的 buildscriptallprojects 移动至 setting.gradle 并改名为 pluginManagement 和 dependencyResolutionManagement 。里面的东西依旧可以按照原来的 copy 过来。

(2)将最外层 build.gradle 中的 dependencies 修改为 plugins,替代了引用原来的 Gradle 版本。

(3)setting.gralde 中增加了 rootProject.name = “xxx” 配置。

完。

码先生
Author: 码先生

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注