diff --git a/build.gradle.kts b/build.gradle.kts index 04d4756..979d646 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,6 +15,8 @@ plugins { alias(libs.plugins.android.test) apply false alias(libs.plugins.baselineprofile) apply false alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.jetbrainsCompose) apply false + alias(libs.plugins.kotlinMultiplatform) apply false } // TODO Replace Detekt Gradle with terminal launch diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts index 63f85cd..5601063 100644 --- a/core/common/build.gradle.kts +++ b/core/common/build.gradle.kts @@ -1,12 +1,33 @@ +@file:OptIn(ExperimentalKotlinGradlePluginApi::class) + +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.androidLibrary) - alias(libs.plugins.jetbrainsKotlinAndroid) + alias(libs.plugins.kotlinMultiplatform) } kotlin { explicitApi = ExplicitApiMode.Strict + + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } + } + + sourceSets { + commonMain.dependencies { + implementation(libs.kotlinx.coroutines.core) + api(libs.kotlinx.immutable) + } + + androidMain.dependencies { + implementation(libs.androidx.core.ktx) + } + } } android { @@ -21,14 +42,4 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - - kotlinOptions { - jvmTarget = "1.8" - } -} - -dependencies { - implementation(libs.androidx.core.ktx) - implementation(libs.kotlinx.coroutines.core) - api(libs.kotlinx.immutable) } diff --git a/core/common/src/main/kotlin/dev/androidbroadcast/common/Logger.kt b/core/common/src/androidMain/kotlin/dev/androidbroadcast/common/AndroidLogcatLogger.kt similarity index 70% rename from core/common/src/main/kotlin/dev/androidbroadcast/common/Logger.kt rename to core/common/src/androidMain/kotlin/dev/androidbroadcast/common/AndroidLogcatLogger.kt index f771a33..d45ebe9 100644 --- a/core/common/src/main/kotlin/dev/androidbroadcast/common/Logger.kt +++ b/core/common/src/androidMain/kotlin/dev/androidbroadcast/common/AndroidLogcatLogger.kt @@ -2,18 +2,6 @@ package dev.androidbroadcast.common import android.util.Log -public interface Logger { - public fun d( - tag: String, - message: String - ) - - public fun e( - tag: String, - message: String - ) -} - public fun AndroidLogcatLogger(): Logger = object : Logger { override fun d( diff --git a/core/common/src/main/kotlin/dev/androidbroadcast/common/AppDispatchers.kt b/core/common/src/commonMain/kotlin/dev/androidbroadcast/common/AppDispatchers.kt similarity index 100% rename from core/common/src/main/kotlin/dev/androidbroadcast/common/AppDispatchers.kt rename to core/common/src/commonMain/kotlin/dev/androidbroadcast/common/AppDispatchers.kt diff --git a/core/common/src/commonMain/kotlin/dev/androidbroadcast/common/Logger.kt b/core/common/src/commonMain/kotlin/dev/androidbroadcast/common/Logger.kt new file mode 100644 index 0000000..a9429f2 --- /dev/null +++ b/core/common/src/commonMain/kotlin/dev/androidbroadcast/common/Logger.kt @@ -0,0 +1,13 @@ +package dev.androidbroadcast.common + +public interface Logger { + public fun d( + tag: String, + message: String + ) + + public fun e( + tag: String, + message: String + ) +} diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts index 3c0d52e..22951e8 100644 --- a/core/data/build.gradle.kts +++ b/core/data/build.gradle.kts @@ -1,12 +1,34 @@ import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.androidLibrary) - alias(libs.plugins.jetbrainsKotlinAndroid) + alias(libs.plugins.kotlinMultiplatform) } kotlin { explicitApi = ExplicitApiMode.Strict + + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } + } + + sourceSets { + commonMain.dependencies { + implementation(libs.kotlinx.coroutines.core) + implementation(projects.core.common) + implementation(projects.core.database) + implementation(projects.core.opennewsApi) + } + + androidMain.dependencies { + implementation(libs.kotlinx.coroutines.android) + implementation(libs.androidx.core.ktx) + implementation(libs.javax.inject) + } + } } android { @@ -21,19 +43,4 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - - kotlinOptions { - jvmTarget = "1.8" - } -} - -dependencies { - implementation(libs.androidx.core.ktx) - implementation(libs.kotlinx.coroutines.android) - - implementation(projects.core.database) - implementation(projects.core.opennewsApi) - implementation(projects.core.common) - - implementation(libs.javax.inject) } diff --git a/core/data/src/main/kotlin/dev/androidbroadcast/news/data/ArticlesRepository.kt b/core/data/src/androidMain/kotlin/dev/androidbroadcast/news/data/ArticlesRepository.kt similarity index 100% rename from core/data/src/main/kotlin/dev/androidbroadcast/news/data/ArticlesRepository.kt rename to core/data/src/androidMain/kotlin/dev/androidbroadcast/news/data/ArticlesRepository.kt diff --git a/core/data/src/main/kotlin/dev/androidbroadcast/news/data/Mappers.kt b/core/data/src/androidMain/kotlin/dev/androidbroadcast/news/data/Mappers.kt similarity index 100% rename from core/data/src/main/kotlin/dev/androidbroadcast/news/data/Mappers.kt rename to core/data/src/androidMain/kotlin/dev/androidbroadcast/news/data/Mappers.kt diff --git a/core/data/src/main/kotlin/dev/androidbroadcast/news/data/MergeStrategy.kt b/core/data/src/androidMain/kotlin/dev/androidbroadcast/news/data/MergeStrategy.kt similarity index 100% rename from core/data/src/main/kotlin/dev/androidbroadcast/news/data/MergeStrategy.kt rename to core/data/src/androidMain/kotlin/dev/androidbroadcast/news/data/MergeStrategy.kt diff --git a/core/data/src/main/kotlin/dev/androidbroadcast/news/data/RequestResult.kt b/core/data/src/androidMain/kotlin/dev/androidbroadcast/news/data/RequestResult.kt similarity index 100% rename from core/data/src/main/kotlin/dev/androidbroadcast/news/data/RequestResult.kt rename to core/data/src/androidMain/kotlin/dev/androidbroadcast/news/data/RequestResult.kt diff --git a/core/data/src/main/kotlin/dev/androidbroadcast/news/data/model/Article.kt b/core/data/src/androidMain/kotlin/dev/androidbroadcast/news/data/model/Article.kt similarity index 100% rename from core/data/src/main/kotlin/dev/androidbroadcast/news/data/model/Article.kt rename to core/data/src/androidMain/kotlin/dev/androidbroadcast/news/data/model/Article.kt diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts index 7581131..2d85812 100644 --- a/core/database/build.gradle.kts +++ b/core/database/build.gradle.kts @@ -1,10 +1,33 @@ +@file:OptIn(ExperimentalKotlinGradlePluginApi::class) + +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.androidLibrary) - alias(libs.plugins.jetbrainsKotlinAndroid) + alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.ksp) alias(libs.plugins.androidx.room) } +kotlin { + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } + } + + sourceSets { + commonMain.dependencies { + } + + androidMain.dependencies { + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.room.ktx) + } + } +} + android { namespace = "dev.androidbroadcast.news.database" compileSdk = 34 @@ -22,9 +45,6 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { - jvmTarget = "1.8" - } } room { @@ -32,7 +52,5 @@ room { } dependencies { - implementation(libs.androidx.core.ktx) ksp(libs.androidx.room.compiler) - implementation(libs.androidx.room.ktx) } diff --git a/core/database/src/main/kotlin/dev/androidbroadcast/news/database/NewsRoomDatabase.kt b/core/database/src/androidMain/kotlin/dev/androidbroadcast/news/database/NewsRoomDatabase.kt similarity index 100% rename from core/database/src/main/kotlin/dev/androidbroadcast/news/database/NewsRoomDatabase.kt rename to core/database/src/androidMain/kotlin/dev/androidbroadcast/news/database/NewsRoomDatabase.kt diff --git a/core/database/src/main/kotlin/dev/androidbroadcast/news/database/dao/ArticleDao.kt b/core/database/src/androidMain/kotlin/dev/androidbroadcast/news/database/dao/ArticleDao.kt similarity index 100% rename from core/database/src/main/kotlin/dev/androidbroadcast/news/database/dao/ArticleDao.kt rename to core/database/src/androidMain/kotlin/dev/androidbroadcast/news/database/dao/ArticleDao.kt diff --git a/core/database/src/main/kotlin/dev/androidbroadcast/news/database/models/ArticleDBO.kt b/core/database/src/androidMain/kotlin/dev/androidbroadcast/news/database/models/ArticleDBO.kt similarity index 100% rename from core/database/src/main/kotlin/dev/androidbroadcast/news/database/models/ArticleDBO.kt rename to core/database/src/androidMain/kotlin/dev/androidbroadcast/news/database/models/ArticleDBO.kt diff --git a/core/database/src/main/kotlin/dev/androidbroadcast/news/database/utils/Converters.kt b/core/database/src/androidMain/kotlin/dev/androidbroadcast/news/database/utils/Converters.kt similarity index 100% rename from core/database/src/main/kotlin/dev/androidbroadcast/news/database/utils/Converters.kt rename to core/database/src/androidMain/kotlin/dev/androidbroadcast/news/database/utils/Converters.kt diff --git a/core/opennews-api/build.gradle.kts b/core/opennews-api/build.gradle.kts index 9028b79..41ab101 100644 --- a/core/opennews-api/build.gradle.kts +++ b/core/opennews-api/build.gradle.kts @@ -1,21 +1,29 @@ plugins { - alias(libs.plugins.jetbrainsKotlinJvm) alias(libs.plugins.kotlinSerialization) - alias(libs.plugins.kapt) + alias(libs.plugins.kotlinMultiplatform) + // KAPT не поддерживает KMP +} + +kotlin { + jvm() + + sourceSets { + commonMain.dependencies { + implementation(libs.kotlinx.coroutines.core) + api(libs.kotlinx.serialization.json) + } + + jvmMain.dependencies { + implementation(libs.retrofit) + implementation(libs.androidx.annotation) + implementation(libs.retrofit.converter.kotlinx.serialization) + implementation(libs.retrofit.adapters.result) + api(libs.okhttp) + } + } } java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } - -dependencies { - implementation(libs.retrofit) - implementation(libs.kotlinx.coroutines.core) - api(libs.kotlinx.serialization.json) - implementation(libs.androidx.annotation) - implementation(libs.retrofit.converter.kotlinx.serialization) - implementation(libs.retrofit.adapters.result) - api(libs.okhttp) - kapt(libs.retrofit.responseTypeKeeper) -} diff --git a/core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/NewsApi.kt b/core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/NewsApi.kt similarity index 100% rename from core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/NewsApi.kt rename to core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/NewsApi.kt diff --git a/core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/models/ArticleDTO.kt b/core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/models/ArticleDTO.kt similarity index 100% rename from core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/models/ArticleDTO.kt rename to core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/models/ArticleDTO.kt diff --git a/core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/models/Language.kt b/core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/models/Language.kt similarity index 100% rename from core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/models/Language.kt rename to core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/models/Language.kt diff --git a/core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/models/ResponseDTO.kt b/core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/models/ResponseDTO.kt similarity index 100% rename from core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/models/ResponseDTO.kt rename to core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/models/ResponseDTO.kt diff --git a/core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/models/SortBy.kt b/core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/models/SortBy.kt similarity index 100% rename from core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/models/SortBy.kt rename to core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/models/SortBy.kt diff --git a/core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/models/SourceDTO.kt b/core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/models/SourceDTO.kt similarity index 100% rename from core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/models/SourceDTO.kt rename to core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/models/SourceDTO.kt diff --git a/core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/utils/DateTimeUTCSerializer.kt b/core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/utils/DateTimeUTCSerializer.kt similarity index 100% rename from core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/utils/DateTimeUTCSerializer.kt rename to core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/utils/DateTimeUTCSerializer.kt diff --git a/core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/utils/NewsApiKeyInterceptor.kt b/core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/utils/NewsApiKeyInterceptor.kt similarity index 100% rename from core/opennews-api/src/main/java/dev/androidbroadcast/newsapi/utils/NewsApiKeyInterceptor.kt rename to core/opennews-api/src/jvmMain/kotlin/dev/androidbroadcast/newsapi/utils/NewsApiKeyInterceptor.kt diff --git a/core/uikit/build.gradle.kts b/core/uikit/build.gradle.kts index 6096e69..f3b1c72 100644 --- a/core/uikit/build.gradle.kts +++ b/core/uikit/build.gradle.kts @@ -1,7 +1,41 @@ +@file:OptIn(ExperimentalKotlinGradlePluginApi::class) + +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.androidLibrary) - alias(libs.plugins.jetbrainsKotlinAndroid) + alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.compose.compiler) + alias(libs.plugins.jetbrainsCompose) + alias(libs.plugins.detekt) +} + +kotlin { + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } + } + + sourceSets { + commonMain.dependencies { + api(compose.ui) + api(compose.runtime) + api(compose.foundation) + api(compose.material3) + implementation(compose.components.uiToolingPreview) + } + + androidMain.dependencies { + implementation(libs.androidx.core.ktx) + // Need only for debug + implementation(libs.androidx.compose.ui.tooling) + // Need only for debug + implementation(libs.androidx.compose.ui.test.manifest) + implementation(project.dependencies.platform(libs.androidx.compose.bom)) + } + } } android { @@ -16,20 +50,4 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - - kotlinOptions { - jvmTarget = "1.8" - } -} - -dependencies { - implementation(libs.androidx.core.ktx) - implementation(platform(libs.androidx.compose.bom)) - api(libs.androidx.compose.ui) - api(libs.androidx.compose.ui.graphics) - api(libs.androidx.compose.ui.tooling.preview) - api(libs.androidx.compose.runtime) - api(libs.androidx.material3) - debugApi(libs.androidx.compose.ui.tooling) - debugApi(libs.androidx.compose.ui.test.manifest) } diff --git a/core/uikit/src/main/kotlin/dev/androidbroadcast/news/Color.kt b/core/uikit/src/commonMain/kotlin/dev/androidbroadcast/news/Color.kt similarity index 100% rename from core/uikit/src/main/kotlin/dev/androidbroadcast/news/Color.kt rename to core/uikit/src/commonMain/kotlin/dev/androidbroadcast/news/Color.kt diff --git a/core/uikit/src/main/kotlin/dev/androidbroadcast/news/Theme.kt b/core/uikit/src/commonMain/kotlin/dev/androidbroadcast/news/Theme.kt similarity index 100% rename from core/uikit/src/main/kotlin/dev/androidbroadcast/news/Theme.kt rename to core/uikit/src/commonMain/kotlin/dev/androidbroadcast/news/Theme.kt diff --git a/core/uikit/src/main/kotlin/dev/androidbroadcast/news/Type.kt b/core/uikit/src/commonMain/kotlin/dev/androidbroadcast/news/Type.kt similarity index 100% rename from core/uikit/src/main/kotlin/dev/androidbroadcast/news/Type.kt rename to core/uikit/src/commonMain/kotlin/dev/androidbroadcast/news/Type.kt diff --git a/core/uikit/src/main/AndroidManifest.xml b/core/uikit/src/main/AndroidManifest.xml deleted file mode 100644 index 44008a4..0000000 --- a/core/uikit/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/features/news-main/ui-logic/build.gradle.kts b/features/news-main/ui-logic/build.gradle.kts index de790d3..72e7e20 100644 --- a/features/news-main/ui-logic/build.gradle.kts +++ b/features/news-main/ui-logic/build.gradle.kts @@ -1,18 +1,48 @@ +@file:OptIn(ExperimentalKotlinGradlePluginApi::class) + +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.androidLibrary) - alias(libs.plugins.jetbrainsKotlinAndroid) + alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.dagger.hilt.android) alias(libs.plugins.kapt) + // Dagger Hilt нужно будет менять на мультиплатформенное решение } kotlin { explicitApi = ExplicitApiMode.Strict + + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } + } + + sourceSets { + commonMain.dependencies { + implementation(libs.kotlinx.coroutines.core) + api(libs.kotlinx.immutable) + api(projects.core.data) + } + + androidMain.dependencies { + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.lifecycle.viewmodel.ktx) + + implementation(libs.kotlinx.coroutines.android) + + compileOnly(libs.androidx.compose.runtime) + implementation(libs.dagger.hilt.android) + } + } } android { - namespace = "dev.androidbroadcast.news.main" + namespace = "dev.androidbroadcast.news.main.uilogic" compileSdk = libs.versions.androidSdk.compile.get().toInt() defaultConfig { @@ -24,24 +54,8 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - - kotlinOptions { - jvmTarget = "1.8" - } } dependencies { - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.lifecycle.runtime.ktx) - implementation(libs.androidx.lifecycle.viewmodel.ktx) - - implementation(libs.kotlinx.coroutines.android) - - compileOnly(libs.androidx.compose.runtime) - api(libs.kotlinx.immutable) - - api(projects.core.data) - - implementation(libs.dagger.hilt.android) - kapt(libs.dagger.hilt.compiler) + "kapt"(libs.dagger.hilt.compiler) } diff --git a/features/news-main/ui/build.gradle.kts b/features/news-main/ui/build.gradle.kts index 9b52920..4a6493b 100644 --- a/features/news-main/ui/build.gradle.kts +++ b/features/news-main/ui/build.gradle.kts @@ -1,20 +1,58 @@ +@file:OptIn(ExperimentalKotlinGradlePluginApi::class) + +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.androidLibrary) - alias(libs.plugins.jetbrainsKotlinAndroid) + alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.compose.compiler) + alias(libs.plugins.jetbrainsCompose) + alias(libs.plugins.detekt) alias(libs.plugins.dagger.hilt.android) alias(libs.plugins.kapt) - alias(libs.plugins.compose.compiler) +} + +kotlin { + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } + } + + sourceSets { + commonMain.dependencies { + implementation(libs.kotlinx.coroutines.core) + implementation(projects.features.newsMain.uiLogic) + implementation(projects.core.common) + implementation(libs.coil.compose) + implementation(projects.core.uikit) + } + + androidMain.dependencies { + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.activity.compose) + + implementation(libs.androidx.lifecycle.viewmodel.ktx) + implementation(libs.androidx.lifecycle.viewmodel.compose) + + implementation(libs.kotlinx.coroutines.android) + + implementation(libs.dagger.hilt.android) + + implementation(project.dependencies.platform(libs.androidx.compose.bom)) + } + } } android { - namespace = "dev.androidbroadcast.news.main" + namespace = "dev.androidbroadcast.news.main.ui" compileSdk = libs.versions.androidSdk.compile.get().toInt() defaultConfig { minSdk = libs.versions.androidSdk.min.get().toInt() - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") } compileOptions { @@ -22,10 +60,6 @@ android { targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { - jvmTarget = "1.8" - } - buildFeatures { compose = true } @@ -33,28 +67,11 @@ android { composeCompiler { enableStrongSkippingMode = true - reportsDestination = layout.buildDirectory.dir("compose_compiler") } dependencies { - implementation(platform(libs.androidx.compose.bom)) - - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.lifecycle.runtime.ktx) - implementation(libs.androidx.activity.compose) - - implementation(libs.androidx.lifecycle.viewmodel.ktx) - implementation(libs.androidx.lifecycle.viewmodel.compose) - - implementation(libs.kotlinx.coroutines.android) - - implementation(projects.features.newsMain.uiLogic) - implementation(projects.core.uikit) - - implementation(libs.dagger.hilt.android) - kapt(libs.dagger.hilt.compiler) - - implementation(libs.coil.compose) - implementation(projects.core.common) + "kapt"(libs.dagger.hilt.compiler) + debugImplementation(libs.androidx.compose.ui.tooling) + debugImplementation(libs.androidx.compose.ui.tooling.preview) } diff --git a/features/news-main/ui/src/main/kotlin/dev/androidbroadcast/news/main/ArticleListContent.kt b/features/news-main/ui/src/androidMain/kotlin/dev/androidbroadcast/news/main/ArticleListContent.kt similarity index 98% rename from features/news-main/ui/src/main/kotlin/dev/androidbroadcast/news/main/ArticleListContent.kt rename to features/news-main/ui/src/androidMain/kotlin/dev/androidbroadcast/news/main/ArticleListContent.kt index 2ebfc81..b999cfa 100644 --- a/features/news-main/ui/src/main/kotlin/dev/androidbroadcast/news/main/ArticleListContent.kt +++ b/features/news-main/ui/src/androidMain/kotlin/dev/androidbroadcast/news/main/ArticleListContent.kt @@ -24,6 +24,7 @@ import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.compose.AsyncImagePainter import dev.androidbroadcast.news.NewsTheme +import dev.androidbroadcast.news.main.ui.R @Composable internal fun ArticleList( diff --git a/features/news-main/ui/src/main/kotlin/dev/androidbroadcast/news/main/NewsMainFeatureUI.kt b/features/news-main/ui/src/androidMain/kotlin/dev/androidbroadcast/news/main/NewsMainFeatureUI.kt similarity index 100% rename from features/news-main/ui/src/main/kotlin/dev/androidbroadcast/news/main/NewsMainFeatureUI.kt rename to features/news-main/ui/src/androidMain/kotlin/dev/androidbroadcast/news/main/NewsMainFeatureUI.kt diff --git a/features/news-main/ui/src/main/res/values/strings.xml b/features/news-main/ui/src/androidMain/res/values/strings.xml similarity index 100% rename from features/news-main/ui/src/main/res/values/strings.xml rename to features/news-main/ui/src/androidMain/res/values/strings.xml diff --git a/features/news-main/ui/src/main/AndroidManifest.xml b/features/news-main/ui/src/main/AndroidManifest.xml deleted file mode 100644 index 44008a4..0000000 --- a/features/news-main/ui/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0e06c65..dc67530 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -21,6 +21,7 @@ ksp = "2.0.0-1.0.21" dagger = "2.51.1" javax-inject = "1" okhttp = "4.12.0" +# Используем альфа версию Coil т.к. она поддерживает KMP coil = "2.6.0" detekt = "1.23.6" uiautomator = "2.3.0" @@ -32,6 +33,7 @@ androidSdk-min = "24" androidSdk-compile = "34" kotlinx-immutable = "0.3.7" compose-rules = "0.4.3" +compose-plugin = "1.6.11" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -108,3 +110,5 @@ detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } android-test = { id = "com.android.test", version.ref = "agp" } baselineprofile = { id = "androidx.baselineprofile", version.ref = "baselineprofile" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" } +kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }