1+ package build.Jetchat
2+
3+ import mill.*
4+ import androidlib.*
5+ import kotlinlib.*
6+ import build.*
7+ import mill.javalib.api.JvmWorkerApi
8+ import mill.kotlinlib.ksp.KspModule
9+
10+ import java.nio.file.Files
11+
12+ object app extends BaseAndroidModule, AndroidR8AppModule {
13+
14+ override def androidApplicationNamespace: String = "com.example.compose.jetchat"
15+
16+ override def androidApplicationId: String = "com.example.compose.jetchat"
17+
18+ override def bomMvnDeps: T[Seq[Dep]] = Seq(
19+ mvn"androidx.compose:compose-bom:2025.08.00"
20+ )
21+
22+ override def androidDebugSettings: T[AndroidBuildTypeSettings] = Task {
23+ AndroidBuildTypeSettings(
24+ isMinifyEnabled = false
25+ )
26+ }
27+ def androidProjectProguardFiles = Task.Sources(
28+ "proguard-rules.pro"
29+ )
30+ def androidDefaultProguardFileNames: Task[Seq[String]] = Task.Anon {
31+ Seq("proguard-android-optimize.txt")
32+ }
33+
34+ override def androidEnableCompose: T[Boolean] = true
35+
36+ override def androidEnableViewBinding = true
37+
38+ override def androidDataBindingCompilerVersion = "8.13.0"
39+
40+ override def kotlinUseEmbeddableCompiler: Task[Boolean] = Task {
41+ true
42+ }
43+
44+ override def mvnDeps = super.mvnDeps() ++ Seq(
45+ mvn"androidx.glance:glance-appwidget:1.1.1",
46+ mvn"androidx.glance:glance-material3:1.1.1",
47+ mvn"org.jetbrains.kotlin:kotlin-stdlib-jdk8:${build.Versions.kotlinVersion}",
48+ mvn"org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2",
49+ mvn"androidx.activity:activity-compose:1.10.1",
50+ mvn"androidx.core:core-ktx:1.16.0",
51+ mvn"androidx.appcompat:appcompat:1.7.0",
52+ mvn"androidx.compose.runtime:runtime-livedata",
53+ mvn"androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0",
54+ mvn"androidx.lifecycle:lifecycle-runtime-compose:2.9.0",
55+ mvn"androidx.lifecycle:lifecycle-livedata:2.9.0",
56+ mvn"androidx.navigation:navigation-fragment-ktx:2.9.0",
57+ mvn"androidx.navigation:navigation-ui-ktx:2.9.0",
58+ mvn"androidx.compose.material3:material3",
59+ mvn"androidx.compose.material:material-icons-extended",
60+ mvn"androidx.compose.ui:ui-util",
61+ mvn"androidx.compose.ui:ui-viewbinding",
62+ mvn"androidx.compose.ui:ui-text-google-fonts",
63+ mvn"androidx.databinding:viewbinding:8.13.0",
64+ mvn"androidx.compose.ui:ui-tooling",
65+ mvn"androidx.compose.ui:ui-tooling-preview",
66+ mvn"androidx.compose.ui:ui-test-manifest",
67+ mvn"com.google.android.material:material:1.6.0"
68+ )
69+
70+
71+ object androidTest extends AndroidAppKotlinInstrumentedTests, AndroidR8AppModule {
72+ override def bomMvnDeps = super.mvnDeps() ++ Seq(
73+ mvn"androidx.compose:compose-bom:2025.08.00"
74+ )
75+
76+ // TODO consider defaulting this to the parent app value
77+ override def androidEnableCompose = true
78+
79+ // TODO consider defaulting this to the parent app value
80+ override def kotlinUseEmbeddableCompiler: Task[Boolean] = Task {
81+ true
82+ }
83+
84+ // FIXME: R8 should compile without missing classes errors
85+ override def androidR8Args = Seq("--map-diagnostics", "error", "warning")
86+
87+ def mvnDeps = super.mvnDeps() ++ Seq(
88+ mvn"junit:junit:4.13.2",
89+ mvn"androidx.test:core:1.6.1",
90+ mvn"androidx.test:runner:1.6.1",
91+ mvn"androidx.test.espresso:espresso-core:3.6.1",
92+ mvn"androidx.test:rules:1.6.1",
93+ mvn"androidx.test.ext:junit:1.2.1",
94+ mvn"org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2",
95+ mvn"androidx.compose.ui:ui-test",
96+ mvn"androidx.compose.ui:ui-test-junit4",
97+ mvn"androidx.collection:collection-ktx:1.5.0",
98+
99+ // Resolve conflicts
100+ mvn"androidx.savedstate:savedstate-ktx:1.3.0"
101+ )
102+
103+ }
104+ }
0 commit comments