diff --git a/coin/provisioning/common/linux/android/gradle_project/README.md b/coin/provisioning/common/linux/android/gradle_project/README.md index 439cd362..d6c68f04 100644 --- a/coin/provisioning/common/linux/android/gradle_project/README.md +++ b/coin/provisioning/common/linux/android/gradle_project/README.md @@ -15,6 +15,9 @@ that might need updates in the future: layout and logic of the app, this shouldn't need to be touched. - AndroidManifest.xml / app/build.gradle: Sets project settings like target version. - gradle/libs.versions.toml: This sets the version numbers of various dependencies. +- feature/: an on-demand dynamic feature module, it caches the + com.android.dynamic-feature plugin and the Play feature delivery library + used by the Feature Delivery tests. Other files required for the project build are gradle wrapper and scripts which are fetched by android_linux.sh from qtbase. diff --git a/coin/provisioning/common/linux/android/gradle_project/app/build.gradle b/coin/provisioning/common/linux/android/gradle_project/app/build.gradle index 8d8a2b12..764ac799 100644 --- a/coin/provisioning/common/linux/android/gradle_project/app/build.gradle +++ b/coin/provisioning/common/linux/android/gradle_project/app/build.gradle @@ -18,10 +18,13 @@ android { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } + + dynamicFeatures = [':feature'] } dependencies { implementation libs.core implementation libs.appcompat implementation libs.material + implementation libs.play.feature.delivery } diff --git a/coin/provisioning/common/linux/android/gradle_project/app/src/main/res/values/strings.xml b/coin/provisioning/common/linux/android/gradle_project/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..521b5538 --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + + Feature + diff --git a/coin/provisioning/common/linux/android/gradle_project/build.gradle b/coin/provisioning/common/linux/android/gradle_project/build.gradle index 602be027..dcc9087b 100644 --- a/coin/provisioning/common/linux/android/gradle_project/build.gradle +++ b/coin/provisioning/common/linux/android/gradle_project/build.gradle @@ -1,4 +1,5 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { alias(libs.plugins.androidApplication) apply false +alias(libs.plugins.androidDynamicFeature) apply false } diff --git a/coin/provisioning/common/linux/android/gradle_project/feature/build.gradle b/coin/provisioning/common/linux/android/gradle_project/feature/build.gradle new file mode 100644 index 00000000..5e628ebf --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/feature/build.gradle @@ -0,0 +1,17 @@ +plugins { + alias(libs.plugins.androidDynamicFeature) +} + +android { + namespace 'com.example.gradle_project.feature' + compileSdk 36 + + defaultConfig { + minSdk 28 + } +} + +dependencies { + implementation project(':app') + implementation libs.play.feature.delivery +} diff --git a/coin/provisioning/common/linux/android/gradle_project/feature/src/main/AndroidManifest.xml b/coin/provisioning/common/linux/android/gradle_project/feature/src/main/AndroidManifest.xml new file mode 100644 index 00000000..bea6d055 --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/feature/src/main/AndroidManifest.xml @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/coin/provisioning/common/linux/android/gradle_project/feature/src/main/java/com/example/gradle_project/feature/Feature.java b/coin/provisioning/common/linux/android/gradle_project/feature/src/main/java/com/example/gradle_project/feature/Feature.java new file mode 100644 index 00000000..732addfb --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/feature/src/main/java/com/example/gradle_project/feature/Feature.java @@ -0,0 +1,7 @@ +package com.example.gradle_project.feature; + +public class Feature { + public static String hello() { + return "hello"; + } +} diff --git a/coin/provisioning/common/linux/android/gradle_project/gradle/libs.versions.toml b/coin/provisioning/common/linux/android/gradle_project/gradle/libs.versions.toml index b38aa98a..366a9b7e 100644 --- a/coin/provisioning/common/linux/android/gradle_project/gradle/libs.versions.toml +++ b/coin/provisioning/common/linux/android/gradle_project/gradle/libs.versions.toml @@ -4,14 +4,17 @@ core = "1.17.0" appcompat = "1.7.1" material = "1.13.0" constraintlayout = "2.2.1" +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" } constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } +play-feature-delivery = { module = "com.google.android.play:feature-delivery", version.ref = "play-feature-delivery" } [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" } +androidDynamicFeature = { id = "com.android.dynamic-feature", version.ref = "agp" } [bundles] diff --git a/coin/provisioning/common/linux/android/gradle_project/settings.gradle b/coin/provisioning/common/linux/android/gradle_project/settings.gradle index ca34c7e7..a9249d23 100644 --- a/coin/provisioning/common/linux/android/gradle_project/settings.gradle +++ b/coin/provisioning/common/linux/android/gradle_project/settings.gradle @@ -14,4 +14,4 @@ dependencyResolutionManagement { } rootProject.name = "gradle_project" -include ':app' +include ':app', ':feature'