前言SourceSets
介绍
java插件引入了一个概念叫做SourceSets
,通过修改SourceSets
中的属性,可以指定哪些源文件(或文件夹下的源文件)要被编译
,哪些源文件要被排除
。Gradle就是通过它实现Java项目的布局定义。
SourceSets目录结构是固定的Java的标准项目目录布局
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
那么如何进行修改?
sourceSets {
main {
java {
srcDir 'src/java' // 指定源码目录
}
resources {
srcDir 'src/resources' //资源目录
}
}
}
- 我们可以在sourceSets中配置指定的Manifest文件(例如在组件化开发中, 我们需要针对debug与release模式下, 指定不同的Manifest文件)
sourceSets {
main {
if (isDebug.toBoolean()) {
manifest.srcFile 'src/main/debug/AndroidManifest.xml'
} else {
manifest.srcFile 'src/main/release/AndroidManifest.xml'
}
}
}
- 如果我想要加一些我需要的java文件,但我们还不想按照java标准的文件夹结构
sourceSets {
main {
java {
srcDir 'src/myJavaPath'
}
}
}
- 如果我想在打包的时候, 不包含某些文件, 可以如下进行设置
sourceSets {
main {
java {
exclude '/test/**' // 不想包含文件的路径
}
resources {
exclude '/resource/**' // 不想包含的资源文件路径
}
.....
}
}
官方对SourceSets
各项的介绍:
1.不同h5链接地址(地址经常有改动变化的)
![测试环境](https://i-blog.csdnimg.cn/blog_migrate/9e8b9bce5a95056adceb8b99636c1074.png)
![正式环境](https://i-blog.csdnimg.cn/blog_migrate/b8e312f4b9af25a43769075bcc5ed2f6.png)
在日常项目开发中,肯定会有很多这种情况,在不同的环境下加载不同的H5链接
,那么我们怎么去分开配置不同环境H5链接
呢?这个时候就可以用Gradle
中的sourceSets
,来配置不同环境下的java文件
。
sourceSets {
main {
java.srcDirs = ['src/main/java']
}
inTest { //测试环境
java.srcDirs = ['srcTest/main/java']
}
production { //正式环境
java.srcDirs = ['srcProduct/main/java']
}
}
// 渠道包配置
productFlavors {
inTest {
dimension "default"
resValue("string", "app_name", "懂牛股票-测试")
}
production {
dimension "default"
resValue("string", "app_name", "懂牛股票")
}
}
在app目录下分别新建srcTest
,srcProduct
目录,创建完后的是这个样子
然后就可以根据的环境的需要配置不同的链接了
2.接口地址(不会经常改变变化的)buildConfigField
配置即可
flavorDimensions "default"
productFlavors {
inTest {
dimension "default"
resValue("string", "app_name", "懂牛股票-测试")
// API服务地址
buildConfigField('String', 'API_URL', '"https://xcxapi.test.nd.com"')
}
production {
dimension "default"
resValue("string", "app_name", "懂牛股票")
// API服务地址
buildConfigField('String', 'API_URL', '"https://xcxapi.product.nd.com"')
}
}