LoginSignup
1
1

build.gradleのKTS移行でsourceSetsの設定にハマった

Posted at

Androidアプリケーションプロジェクトのビルド構成をGroovy(build.gradle) からKTS(build.gradle.kts) に移行することになりました。
ほとんどはビルド構成を Groovy から KTS に移行するの公式ドキュメントで移行することができました。
しかし、下記のbuild.gradleのsourceSetsの移行には時間がかかったため、記事として忘れないように残しておきます。

build.gradle
android {
    flavorDimensions "situation", "type", "gender"
    productFlavors {
        pet {
            dimension "situation"
        }
        stray {
            dimension "situation"
        }
        dog {
            dimension "type"
        }
        cat {
            dimension "type"
        }
        male {
            dimension "gender"
        }
        female {
            dimension "gender"
        }
    }

    sourceSets {
        petDogMale.java.srcDirs += ["src/petDog/java"]
        petDogMale.res.srcDirs += ["src/petDog/res"]
        petDogFemale.java.srcDirs += ["src/petDog/java"]
        petDogFemale.res.srcDirs += ["src/petDog/res"]
        petCatMale.java.srcDirs += ["src/petCat/java"]
        petCatMale.res.srcDirs += ["src/petCat/res"]
        petCatFemale.java.srcDirs += ["src/petCat/java"]
        petCatFemale.res.srcDirs += ["src/petCat/res"]
        strayDogMale.java.srcDirs += ["src/strayDog/java"]
        strayDogMale.res.srcDirs += ["src/strayDog/res"]
        strayDogFemale.java.srcDirs += ["src/strayDog/java"]
        strayDogFemale.res.srcDirs += ["src/strayDog/res"]
        strayCatMale.java.srcDirs += ["src/strayCat/java"]
        strayCatMale.res.srcDirs += ["src/strayCat/res"]
        strayCatFemale.java.srcDirs += ["src/strayCat/java"]
        strayCatFemale.res.srcDirs += ["src/strayCat/res"]
    }
}

以下が移行後の内容です。

build.gradle.kts
android {
    flavorDimensions+= listOf("situation", "type", "gender")
    productFlavors {
        create("pet") {
            dimension = "situation"
        }
        create("stray") {
            dimension = "situation"
        }
        create("dog") {
            dimension = "type"
        }
        create("cat") {
            dimension = "type"
        }
        create("male") {
            dimension = "gender"
        }
        create("female") {
            dimension = "gender"
        }
    }

    applicationVariants.all {
        sourceSets {
            getByName(name) {
                when {
                    name.startsWith("petDog") -> {
                        java.srcDirs("src/petDog/java")
                        res.srcDirs("src/petDog/res")
                    }
                    name.startsWith("petCat") -> {
                        java.srcDirs("src/petCat/java")
                        res.srcDirs("src/petCat/res")
                    }
                    name.startsWith("strayDog") -> {
                        java.srcDirs("src/strayDog/java")
                        res.srcDirs("src/strayDog/res")
                    }
                    name.startsWith("strayCat") -> {
                        java.srcDirs("src/strayCat/java")
                        res.srcDirs("src/strayCat/res")
                    }
                }
            }
        }
    }
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1