目录
一、前言
二、defaultConfig
1、搞清楚几个问题
2、defaultConfig 的存在形式
3、defaultConfig 中属性的意义
4、defaultConfig 中方法的意义
三、写在最后
一、前言
我们在安卓开发中,编译的任务是由 gradle 来负责的。但很多时候我们进入 build.gradle
文件中,有种似懂非懂的感觉,所以小盆友总结并分享自己学习到的点滴。
话不多说,今天分享的是在我们的每个模块下(应用级)build.gradle
文件中,android
下的 defaultConfig
属性
二、defaultConfig
1、搞清楚几个问题
在分享 defaultConfig
前,我们需要先弄清楚几个问题,这几问题之前一直困扰着小盆友,所以顺便记录和分享下。
(1)build.gradle
最终是以什么形式存在。
(2)为什么 每个模块下的 build.gradle
文件的最开始都有 apply plugin: 'com.android.library'
这样一行代码。
自动生成完的 build.gradle
格式如下所示
apply plugin: 'com.android.library'
android {
// 省略一些配置
}
dependencies {
// 省略依赖
}
这个文件最终会被转换为 org.gradle.api.Project
类(其类的关系如下图)。
![ee7e3e9de31d999f45504519b73c9127.png](https://i-blog.csdnimg.cn/blog_migrate/dc007ba0ff616b52bcd866cdfebfb28e.png)
第一行代码的
apply
会调用PluginAware
的void apply(Map options);
方法,进行设置插件;接下来的
android
,并不是 gradle 中所带的,而是第一行代码插件所带来。具体会映射为com.android.build.gradle.AppExtension
类;最后的
dependencies
,会调用Project
的void dependencies(Closure configureClosure);
方法;
2、defaultConfig 的存在形式
defaultConfig 会被映射为 DefaultConfig
类,其继承结构图如下
![ac7bc6310767f9740dbfc5e6732c3e43.png](https://i-blog.csdnimg.cn/blog_migrate/206c378eaa3f8e02d751d110736ea5b5.png)
3、defaultConfig 中属性的意义
下面是官方给出的文档,我们以 3.3 的版本进行讲解,其他版本可能有些许的小改动。
defaultConfig官方文档
https://google.github.io/android-gradle-dsl/3.3/com.android.build.gradle.internal.dsl.DefaultConfig.html
3.1 applicationId
类型:String
描述:应用的id,即我们常说的包名。我们都知道 android studio 是以 applicationId 作为包名,以前使用 eclipse 时,则另当别论了。
使用方法:
defaultConfig {
// applicationId 应用的包名
// applicationId 会替换 AndroidManifest.xml 中的 manifest 标签下 package 的 value
applicationId "com.zinc.gradlestudy"
......省略其他配置
}
3.2 applicationIdSuffix
类型:String
描述:会追加在上面 applicationId 字符串的后面,形成最终的包名。
使用方法:
defaultConfig {
// 若此时 applicationId 为 com.zinc.gradlestudy,则最终会形成 com.zinc.gradlestudy.debug 的包名
applicationIdSuffix "debug"
......省略其他配置
}
3.3 externalNativeBuild
类型:ExternalNativeBuildOptions
描述:这里我们设置 ndk 编译过程的一些参数。分为 cmake 和 ndkBuild 两个参数。
使用方法:<