温馨提示×

android sourcesets 如何区分不同模块

小樊
81
2024-11-24 22:29:13
栏目: 编程语言

在Android开发中,SourceSets是用于组织和配置项目中的源代码、资源文件和依赖项的工具。要区分不同模块,你可以在项目的根目录下的build.gradle文件中定义不同的sourceSets。以下是一个示例,展示了如何在一个Android项目中区分两个不同的模块(例如,module1module2):

// Project-level build.gradle file

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

subprojects {
    apply plugin: 'com.android.library' // or 'com.android.application'

    android {
        compileSdkVersion 30

        defaultConfig {
            minSdkVersion 21
            targetSdkVersion 30
            versionCode 1
            versionName "1.0"
        }

        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
    }

    // Define source sets for each module
    task sourceSetsForModule(type: SyncTask, group: 'build') {
        from 'src/main/java'
        into 'src/main/java'
    }

    task sourceSetsForModule2(type: SyncTask, group: 'build') {
        from 'src/main/java/module2'
        into 'src/main/java/module2'
    }

    sourceSets {
        main {
            java {
                srcDirs = ['src/main/java']
            }
            resources {
                srcDirs = ['src/main/res']
            }
        }

        module1 {
            java {
                srcDirs = ['src/main/java/module1']
            }
            resources {
                srcDirs = ['src/main/res/module1']
            }
        }

        module2 {
            java {
                srcDirs = ['src/main/java/module2']
            }
            resources {
                srcDirs = ['src/main/res/module2']
            }
        }
    }
}

在这个示例中,我们首先定义了一个名为sourceSetsForModulesourceSetsForModule2的任务,它们分别用于设置每个模块的源代码和资源文件路径。然后,我们在sourceSets块中为每个模块定义了相应的Java和资源配置。

这样,你就可以在项目中区分不同模块的源代码和资源文件了。当你构建项目时,Gradle会根据这些配置来编译和打包相应的模块。

0