Gradle SourceSets实际使用

前言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' //资源目录
        }
    }
}
  1. 我们可以在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'
            }
        }
    }
  1. 如果我想要加一些我需要的java文件,但我们还不想按照java标准的文件夹结构
sourceSets {
    main {
        java {
            srcDir 'src/myJavaPath'
        }
    }
}
  1. 如果我想在打包的时候, 不包含某些文件, 可以如下进行设置
    sourceSets {
        main {
            java {
                exclude '/test/**'  // 不想包含文件的路径
            }
            resources {
                exclude '/resource/**' // 不想包含的资源文件路径
            }
            .....
        }
    }

官方对SourceSets各项的介绍:

20170526171519654.png

1.不同h5链接地址(地址经常有改动变化的)

测试环境 正式环境

在日常项目开发中,肯定会有很多这种情况,在不同的环境下加载不同的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目录下分别新建srcTestsrcProduct目录,创建完后的是这个样子

微信图片_20230613111540.png
然后就可以根据的环境的需要配置不同的链接了

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"')
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值