diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7238a28..ca9475e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,14 +1,10 @@ -import com.google.protobuf.gradle.GenerateProtoTask - plugins { alias(libs.plugins.android.application) alias(libs.plugins.compose) alias(libs.plugins.hilt) - alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.ksp) - alias(libs.plugins.protobuf) } android { @@ -54,6 +50,11 @@ android { kotlin { jvmToolchain(17) + compilerOptions { + freeCompilerArgs.addAll( + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + ) + } } java { @@ -71,56 +72,14 @@ android { unitTests { isIncludeAndroidResources = true } - kotlinOptions { - freeCompilerArgs += listOf( - "-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", - ) - } } namespace = "com.nativeapptemplate.nativeapptemplatefree" } -protobuf { - protoc { - artifact = libs.protobuf.protoc.get().toString() - } - generateProtoTasks { - all().forEach { task -> - task.builtins { - register("java") { - option("lite") - } - register("kotlin") { - option("lite") - } - } - } - } -} - -// Avoid "androidx.datastore.core.DataStore" -// https://github.com/google/ksp/issues/1590#issuecomment-1826387452 -androidComponents { - onVariants(selector().all()) { variant -> - afterEvaluate { - val protoTask = - project.tasks.getByName("generate" + variant.name.replaceFirstChar { it.uppercaseChar() } + "Proto") as GenerateProtoTask - - project.tasks.getByName("ksp" + variant.name.replaceFirstChar { it.uppercaseChar() } + "Kotlin") { - dependsOn(protoTask) - (this as org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool<*>).setSource( - protoTask.outputBaseDir - ) - } - } - } -} - dependencies { - api(libs.protobuf.kotlin.lite) - implementation(project(":model")) + implementation(project(":datastore-proto")) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.activity.compose) diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpView.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpView.kt index 4aeb681..23a7787 100644 --- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpView.kt +++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpView.kt @@ -26,7 +26,7 @@ import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.MenuAnchorType.Companion.PrimaryEditable +import androidx.compose.material3.ExposedDropdownMenuAnchorType.Companion.PrimaryEditable import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarDuration diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditView.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditView.kt index cdccf75..a8eb62f 100644 --- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditView.kt +++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditView.kt @@ -27,7 +27,7 @@ import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.MenuAnchorType.Companion.PrimaryEditable +import androidx.compose.material3.ExposedDropdownMenuAnchorType.Companion.PrimaryEditable import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarDuration diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/shop_settings/ShopBasicSettingsView.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/shop_settings/ShopBasicSettingsView.kt index b262644..0f4e771 100644 --- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/shop_settings/ShopBasicSettingsView.kt +++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/shop_settings/ShopBasicSettingsView.kt @@ -24,7 +24,7 @@ import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.MenuAnchorType.Companion.PrimaryEditable +import androidx.compose.material3.ExposedDropdownMenuAnchorType.Companion.PrimaryEditable import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarDuration diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/shops/ShopCreateView.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/shops/ShopCreateView.kt index f61280b..21d86a1 100644 --- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/shops/ShopCreateView.kt +++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/shops/ShopCreateView.kt @@ -25,7 +25,7 @@ import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.MenuAnchorType.Companion.PrimaryEditable +import androidx.compose.material3.ExposedDropdownMenuAnchorType.Companion.PrimaryEditable import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarDuration diff --git a/build.gradle.kts b/build.gradle.kts index 06501c0..355e186 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -20,7 +20,7 @@ plugins { alias(libs.plugins.dependency.analysis) apply true alias(libs.plugins.gms) apply false alias(libs.plugins.hilt) apply false - alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.jvm) apply false alias(libs.plugins.kotlin.parcelize) apply false alias(libs.plugins.kotlin.serialization) apply false alias(libs.plugins.ksp) apply false diff --git a/datastore-proto/build.gradle.kts b/datastore-proto/build.gradle.kts new file mode 100644 index 0000000..7757e11 --- /dev/null +++ b/datastore-proto/build.gradle.kts @@ -0,0 +1,30 @@ +plugins { + alias(libs.plugins.kotlin.jvm) + alias(libs.plugins.protobuf) +} + +kotlin { + jvmToolchain(17) +} + +protobuf { + protoc { + artifact = libs.protobuf.protoc.get().toString() + } + generateProtoTasks { + all().configureEach { + builtins { + named("java") { + option("lite") + } + register("kotlin") { + option("lite") + } + } + } + } +} + +dependencies { + api(libs.protobuf.kotlin.lite) +} diff --git a/app/src/main/proto/dark_theme_config.proto b/datastore-proto/src/main/proto/dark_theme_config.proto similarity index 100% rename from app/src/main/proto/dark_theme_config.proto rename to datastore-proto/src/main/proto/dark_theme_config.proto diff --git a/app/src/main/proto/item_tag_data.proto b/datastore-proto/src/main/proto/item_tag_data.proto similarity index 100% rename from app/src/main/proto/item_tag_data.proto rename to datastore-proto/src/main/proto/item_tag_data.proto diff --git a/app/src/main/proto/item_tag_info_from_ndef_message.proto b/datastore-proto/src/main/proto/item_tag_info_from_ndef_message.proto similarity index 100% rename from app/src/main/proto/item_tag_info_from_ndef_message.proto rename to datastore-proto/src/main/proto/item_tag_info_from_ndef_message.proto diff --git a/app/src/main/proto/scan_result.proto b/datastore-proto/src/main/proto/scan_result.proto similarity index 100% rename from app/src/main/proto/scan_result.proto rename to datastore-proto/src/main/proto/scan_result.proto diff --git a/app/src/main/proto/user_preferences.proto b/datastore-proto/src/main/proto/user_preferences.proto similarity index 100% rename from app/src/main/proto/user_preferences.proto rename to datastore-proto/src/main/proto/user_preferences.proto diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 435e991..a724738 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,34 +1,34 @@ [versions] # AGP and tools should be updated together -androidGradlePlugin = "8.9.0" +androidGradlePlugin = "9.0.0" androidxActivity = "1.9.3" -androidxComposeBom = "2025.02.00" +androidxComposeBom = "2025.09.01" androidxCore = "1.15.0" androidxCoreSplashscreen = "1.0.1" -androidxDataStore = "1.1.1" +androidxDataStore = "1.2.0" androidxHiltNavigationCompose = "1.2.0" -androidxLifecycle = "2.8.7" +androidxLifecycle = "2.10.0" androidxNavigation = "2.8.5" androidxProfileinstaller = "1.4.1" androidxTracing = "1.3.0-alpha02" capturable = "3.0.1" composeQrCode = "1.0.1" dependencyAnalysis = "2.8.0" -gmsPlugin = "4.4.2" -googleOssPlugin = "0.10.6" -hilt = "2.56" +gmsPlugin = "4.4.4" +googleOssPlugin = "0.10.9" +hilt = "2.59" junit4 = "4.13.2" -kotlin = "2.1.10" +kotlin = "2.3.0" kotlinxCoroutines = "1.10.1" kotlinxSerializationJson = "1.8.0" -ksp = "2.1.10-1.0.31" +ksp = "2.3.4" lottie = "6.6.6" okHttp = "4.12.0" protobuf = "4.29.2" -protobufPlugin = "0.9.4" +protobufPlugin = "0.9.6" retrofit = "2.11.0" retrofitKotlinxSerializationJson = "1.0.0" -robolectric = "4.14.1" +robolectric = "4.16" sandwich = "2.1.1" sandwichRetrofitSerialization = "2.1.1" @@ -84,10 +84,8 @@ dependency-analysis = { id = "com.autonomousapps.dependency-analysis", version.r gms = { id = "com.google.gms.google-services", version.ref = "gmsPlugin" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } protobuf = { id = "com.google.protobuf", version.ref = "protobufPlugin" } - - - diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a79..2e11132 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/model/build.gradle.kts b/model/build.gradle.kts index 8e72703..d1425d0 100644 --- a/model/build.gradle.kts +++ b/model/build.gradle.kts @@ -1,6 +1,5 @@ plugins { alias(libs.plugins.android.library) - alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.ksp) diff --git a/settings.gradle.kts b/settings.gradle.kts index 7fab158..90a2fd7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,4 +18,4 @@ dependencyResolutionManagement { } rootProject.name = "nativeapptemplate" -include(":app", ":model") +include(":app", ":model", ":datastore-proto")