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" }