diff --git a/coin/provisioning/common/shared/gradle/project/README.md b/coin/provisioning/common/shared/gradle/project/README.md index e0f82ba6..e4841622 100644 --- a/coin/provisioning/common/shared/gradle/project/README.md +++ b/coin/provisioning/common/shared/gradle/project/README.md @@ -7,6 +7,7 @@ which use `--offline`. Caches dependencies for: - `com.android.application`: used by Qt test/example APK builds - `com.android.library`: used by Qt JAR builds +- `android.dynamic.feature`: used by Feature Delivery tests - `org.jetbrains.kotlin.android`: used by some Qt modules - AndroidX: used by app builds diff --git a/coin/provisioning/common/shared/gradle/project/app/build.gradle b/coin/provisioning/common/shared/gradle/project/app/build.gradle index 6cd28bc8..3f35c318 100644 --- a/coin/provisioning/common/shared/gradle/project/app/build.gradle +++ b/coin/provisioning/common/shared/gradle/project/app/build.gradle @@ -10,11 +10,14 @@ android { applicationId 'org.qtproject.qt.gradlecache.app' minSdk = 28 } + + dynamicFeatures = [':feature'] } dependencies { implementation libs.core implementation libs.appcompat implementation libs.material + implementation libs.play.feature.delivery testImplementation libs.junit } diff --git a/coin/provisioning/common/shared/gradle/project/app/src/main/res/values/strings.xml b/coin/provisioning/common/shared/gradle/project/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..521b5538 --- /dev/null +++ b/coin/provisioning/common/shared/gradle/project/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + + Feature + diff --git a/coin/provisioning/common/shared/gradle/project/build.gradle b/coin/provisioning/common/shared/gradle/project/build.gradle index 9c5ba578..e4017cff 100644 --- a/coin/provisioning/common/shared/gradle/project/build.gradle +++ b/coin/provisioning/common/shared/gradle/project/build.gradle @@ -1,4 +1,5 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false + alias(libs.plugins.android.dynamic.feature) apply false } diff --git a/coin/provisioning/common/shared/gradle/project/feature/build.gradle b/coin/provisioning/common/shared/gradle/project/feature/build.gradle new file mode 100644 index 00000000..52c898bb --- /dev/null +++ b/coin/provisioning/common/shared/gradle/project/feature/build.gradle @@ -0,0 +1,17 @@ +plugins { + alias(libs.plugins.android.dynamic.feature) +} + +android { + namespace = 'org.qtproject.qt.gradlecache.feature' + compileSdk = 36 + + defaultConfig { + minSdk = 28 + } +} + +dependencies { + implementation project(':app') + implementation libs.play.feature.delivery +} diff --git a/coin/provisioning/common/shared/gradle/project/feature/src/main/AndroidManifest.xml b/coin/provisioning/common/shared/gradle/project/feature/src/main/AndroidManifest.xml new file mode 100644 index 00000000..bea6d055 --- /dev/null +++ b/coin/provisioning/common/shared/gradle/project/feature/src/main/AndroidManifest.xml @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/coin/provisioning/common/shared/gradle/project/feature/src/main/kotlin/org/qtproject/qt/gradlecache/feature/Feature.kt b/coin/provisioning/common/shared/gradle/project/feature/src/main/kotlin/org/qtproject/qt/gradlecache/feature/Feature.kt new file mode 100644 index 00000000..066ec9ef --- /dev/null +++ b/coin/provisioning/common/shared/gradle/project/feature/src/main/kotlin/org/qtproject/qt/gradlecache/feature/Feature.kt @@ -0,0 +1,5 @@ +package org.qtproject.qt.gradlecache.feature + +object Feature { + fun hello(): String = "hello" +} diff --git a/coin/provisioning/common/shared/gradle/project/gradle/libs.versions.toml b/coin/provisioning/common/shared/gradle/project/gradle/libs.versions.toml index 3ce8fec0..f0277579 100644 --- a/coin/provisioning/common/shared/gradle/project/gradle/libs.versions.toml +++ b/coin/provisioning/common/shared/gradle/project/gradle/libs.versions.toml @@ -4,13 +4,16 @@ core = "1.17.0" appcompat = "1.7.1" material = "1.13.0" junit = "4.13.2" +play-feature-delivery = "2.1.0" [libraries] core = { group = "androidx.core", name = "core", version.ref = "core" } appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } material = { group = "com.google.android.material", name = "material", version.ref = "material" } junit = { group = "junit", name = "junit", version.ref = "junit" } +play-feature-delivery = { module = "com.google.android.play:feature-delivery", version.ref = "play-feature-delivery" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } +android-dynamic-feature = { id = "com.android.dynamic-feature", version.ref = "agp" } diff --git a/coin/provisioning/common/shared/gradle/project/settings.gradle b/coin/provisioning/common/shared/gradle/project/settings.gradle index d1ede288..2153d7ae 100644 --- a/coin/provisioning/common/shared/gradle/project/settings.gradle +++ b/coin/provisioning/common/shared/gradle/project/settings.gradle @@ -14,4 +14,4 @@ dependencyResolutionManagement { } rootProject.name = 'gradlecache' -include ':app', ':lib' +include ':app', ':lib', ':feature'