Próbuję utworzyć konfigurację Flavor, aby uniknąć standardowego kodu w każdym pliku gradle modułu i biblioteki.

W tym celu próbuję przekonwertować rozwiązanie Piotra Zawadzkiego (https ://medium.com/stepstone-tech/modularizing-your-flavored-android-project-5db75c59fb0d), która wykorzystuje metodę groovy with() w połączeniu z zamknięciem zawierającym konfigurację smaku.

ext.flavorConfig = { // 1

    flavorDimensions "pricing"
    productFlavors {
        free {
            dimension "pricing"
            ext.myApplicationIdSuffix = '.free' // 2
        }
        paid {
            dimension "pricing"
            ext.myApplicationIdSuffix = '.paid'
        }
    }

    productFlavors.all { flavor -> // 3
        if (flavor.hasProperty('myApplicationIdSuffix') && isApplicationProject()) {
            flavor.applicationIdSuffix = flavor.myApplicationIdSuffix
        }
    }

}

def isApplicationProject() { // 4
    return project.android.class.simpleName.startsWith('BaseAppModuleExtension')
    // in AGP 3.1.x with library modules instead of feature modules:
    // return project.android instanceof com.android.build.gradle.AppExtension
}

To, czego nie znajduję, to odpowiednik metody () dla Kotlin DSL lub właściwy sposób przetłumaczenia Closure.

2
GBRX94 19 listopad 2019, 19:25

1 odpowiedź

Odpowiednikiem powinien być apply lub run, w zależności od rzeczywistej wartości zwracanej with (czego z jakiegoś powodu nie mogłem rozgryźć).

0
tynn 20 listopad 2019, 11:26