diff --git a/android/build.gradle.kts b/android/build.gradle.kts new file mode 100644 index 0000000..2f262b1 --- /dev/null +++ b/android/build.gradle.kts @@ -0,0 +1,63 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.androidApplication) + alias(libs.plugins.composeMultiplatform) + alias(libs.plugins.composeCompiler) +} + +kotlin { + target { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_11) + } + } + + dependencies { + implementation(projects.ui) + implementation(libs.compose.ui.tooling.preview) + implementation(libs.androidx.activity.compose) + + implementation(libs.androidx.appcompat) + implementation(libs.hcaptcha.compose) + + implementation(libs.ktor.client.okhttp) + + implementation(project.dependencies.platform(libs.koin.bom)) + implementation(libs.koin.compose) + } +} + +dependencies { + debugImplementation(libs.compose.ui.tooling) + coreLibraryDesugaring(libs.desugar) +} + +android { + namespace = "moe.lava.neon" + compileSdk = libs.versions.android.compileSdk.get().toInt() + + defaultConfig { + applicationId = "moe.lava.neon" + minSdk = libs.versions.android.minSdk.get().toInt() + targetSdk = libs.versions.android.targetSdk.get().toInt() + versionCode = 1 + versionName = "1.0" + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } + buildTypes { + getByName("release") { + isMinifyEnabled = false + signingConfig = signingConfigs.getByName("debug") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + isCoreLibraryDesugaringEnabled = true + } +} diff --git a/ui/src/androidMain/AndroidManifest.xml b/android/src/main/AndroidManifest.xml similarity index 100% rename from ui/src/androidMain/AndroidManifest.xml rename to android/src/main/AndroidManifest.xml diff --git a/ui/src/androidMain/kotlin/moe/lava/neon/MainActivity.kt b/android/src/main/kotlin/moe/lava/neon/MainActivity.kt similarity index 100% rename from ui/src/androidMain/kotlin/moe/lava/neon/MainActivity.kt rename to android/src/main/kotlin/moe/lava/neon/MainActivity.kt diff --git a/ui/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml b/android/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from ui/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml rename to android/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/ui/src/androidMain/res/drawable/ic_launcher_background.xml b/android/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from ui/src/androidMain/res/drawable/ic_launcher_background.xml rename to android/src/main/res/drawable/ic_launcher_background.xml diff --git a/ui/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml b/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from ui/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml rename to android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/ui/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from ui/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/ui/src/androidMain/res/mipmap-hdpi/ic_launcher.png b/android/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from ui/src/androidMain/res/mipmap-hdpi/ic_launcher.png rename to android/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/ui/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png b/android/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from ui/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png rename to android/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/ui/src/androidMain/res/mipmap-mdpi/ic_launcher.png b/android/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from ui/src/androidMain/res/mipmap-mdpi/ic_launcher.png rename to android/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/ui/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png b/android/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from ui/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png rename to android/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/ui/src/androidMain/res/mipmap-xhdpi/ic_launcher.png b/android/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from ui/src/androidMain/res/mipmap-xhdpi/ic_launcher.png rename to android/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/ui/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png b/android/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from ui/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png rename to android/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/ui/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png b/android/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from ui/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png rename to android/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/ui/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png b/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from ui/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png rename to android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/ui/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png b/android/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from ui/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png rename to android/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/ui/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from ui/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png rename to android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/ui/src/androidMain/res/values/strings.xml b/android/src/main/res/values/strings.xml similarity index 100% rename from ui/src/androidMain/res/values/strings.xml rename to android/src/main/res/values/strings.xml diff --git a/ui/src/main/res/values/styles.xml b/android/src/main/res/values/styles.xml similarity index 100% rename from ui/src/main/res/values/styles.xml rename to android/src/main/res/values/styles.xml diff --git a/api/gateway/build.gradle.kts b/api/gateway/build.gradle.kts index 101843d..75a3458 100644 --- a/api/gateway/build.gradle.kts +++ b/api/gateway/build.gradle.kts @@ -1,19 +1,23 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { - alias(libs.plugins.androidLibrary) + alias(libs.plugins.androidMultiplatformLibrary) alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.kotlinSerialization) } kotlin { - jvm() - androidTarget { + androidLibrary { + namespace = "moe.lava.neon.api.gateway" + compileSdk = libs.versions.android.compileSdk.get().toInt() + compilerOptions { jvmTarget.set(JvmTarget.JVM_11) } } + jvm() + sourceSets { commonMain.dependencies { implementation(project(":api:shared")) @@ -35,31 +39,3 @@ kotlin { } } } - -dependencies { - coreLibraryDesugaring(libs.desugar) -} - -android { - namespace = "moe.lava.neon.api.gateway" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - packaging { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - } - } - buildTypes { - getByName("release") { - isMinifyEnabled = false - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - isCoreLibraryDesugaringEnabled = true - } -} diff --git a/api/rest/build.gradle.kts b/api/rest/build.gradle.kts index 1587873..a7f75e5 100644 --- a/api/rest/build.gradle.kts +++ b/api/rest/build.gradle.kts @@ -1,19 +1,23 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { - alias(libs.plugins.androidLibrary) + alias(libs.plugins.androidMultiplatformLibrary) alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.kotlinSerialization) } kotlin { - jvm() - androidTarget { + androidLibrary { + namespace = "moe.lava.neon.api.rest" + compileSdk = libs.versions.android.compileSdk.get().toInt() + compilerOptions { jvmTarget.set(JvmTarget.JVM_11) } } + jvm() + sourceSets { commonMain.dependencies { implementation(project(":api:shared")) @@ -35,31 +39,3 @@ kotlin { } } } - -dependencies { - coreLibraryDesugaring(libs.desugar) -} - -android { - namespace = "moe.lava.neon.api.rest" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - packaging { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - } - } - buildTypes { - getByName("release") { - isMinifyEnabled = false - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - isCoreLibraryDesugaringEnabled = true - } -} diff --git a/api/shared/build.gradle.kts b/api/shared/build.gradle.kts index 23b67e6..6b1f922 100644 --- a/api/shared/build.gradle.kts +++ b/api/shared/build.gradle.kts @@ -1,50 +1,26 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { - alias(libs.plugins.androidLibrary) + alias(libs.plugins.androidMultiplatformLibrary) alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.kotlinSerialization) } kotlin { - jvm() - androidTarget { + androidLibrary { + namespace = "moe.lava.neon.api" + compileSdk = libs.versions.android.compileSdk.get().toInt() + compilerOptions { jvmTarget.set(JvmTarget.JVM_11) } } + jvm() + sourceSets { commonMain.dependencies { implementation(libs.kotlinx.serialization.json) } } } - -dependencies { - coreLibraryDesugaring(libs.desugar) -} - -android { - namespace = "moe.lava.neon.api" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - packaging { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - } - } - buildTypes { - getByName("release") { - isMinifyEnabled = false - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - isCoreLibraryDesugaringEnabled = true - } -} diff --git a/build.gradle.kts b/build.gradle.kts index 342cac8..d225e2b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,7 +2,7 @@ plugins { // this is necessary to avoid the plugins to be loaded multiple times // in each subproject's classloader alias(libs.plugins.androidApplication) apply false - alias(libs.plugins.androidLibrary) apply false + alias(libs.plugins.androidMultiplatformLibrary) apply false alias(libs.plugins.composeHotReload) apply false alias(libs.plugins.composeMultiplatform) apply false alias(libs.plugins.composeCompiler) apply false diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 8075553..97f594e 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -1,7 +1,7 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { - alias(libs.plugins.androidLibrary) + alias(libs.plugins.androidMultiplatformLibrary) alias(libs.plugins.koinCompiler) alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.kotlinSerialization) @@ -9,13 +9,17 @@ plugins { } kotlin { - jvm() - androidTarget { + androidLibrary { + namespace = "moe.lava.neon.core" + compileSdk = libs.versions.android.compileSdk.get().toInt() + compilerOptions { jvmTarget.set(JvmTarget.JVM_11) } } + jvm() + sourceSets { commonMain.dependencies { implementation(project(":api:gateway")) @@ -34,34 +38,6 @@ kotlin { } } -dependencies { - coreLibraryDesugaring(libs.desugar) -} - -android { - namespace = "moe.lava.neon.core" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - packaging { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - } - } - buildTypes { - getByName("release") { - isMinifyEnabled = false - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - isCoreLibraryDesugaringEnabled = true - } -} - sqldelight { databases { create("Database") { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f04b531..dca678f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] #noinspection AndroidGradlePluginVersion -agp = "8.13.2" +agp = "9.0.0" android-compileSdk = "36" android-minSdk = "24" android-targetSdk = "36" @@ -76,7 +76,7 @@ settings = { module = "com.russhwolf:multiplatform-settings-no-arg", version.ref [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" } -androidLibrary = { id = "com.android.library", version.ref = "agp" } +androidMultiplatformLibrary = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" } composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } composeHotReload = { id = "org.jetbrains.compose.hot-reload", version.ref = "compose-hot-reload" } composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "compose-multiplatform" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d4081da..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.14.3-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/settings.gradle.kts b/settings.gradle.kts index 0811cc7..2b18bad 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -33,6 +33,7 @@ plugins { id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } +include(":android") include(":api:gateway") include(":api:rest") include(":api:shared") diff --git a/ui/build.gradle.kts b/ui/build.gradle.kts index d69d7f9..dfd7b9b 100644 --- a/ui/build.gradle.kts +++ b/ui/build.gradle.kts @@ -4,7 +4,7 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.kotlinSerialization) - alias(libs.plugins.androidApplication) + alias(libs.plugins.androidMultiplatformLibrary) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.composeCompiler) alias(libs.plugins.composeHotReload) @@ -12,14 +12,21 @@ plugins { } kotlin { - androidTarget { + androidLibrary { + namespace = "moe.lava.neon.ui" + compileSdk = libs.versions.android.compileSdk.get().toInt() + compilerOptions { jvmTarget.set(JvmTarget.JVM_11) } + + androidResources { + enable = true + } } - + jvm() - + sourceSets { androidMain.dependencies { implementation(libs.compose.ui.tooling.preview) @@ -72,38 +79,8 @@ kotlin { } } -android { - namespace = "moe.lava.neon" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - applicationId = "moe.lava.neon" - minSdk = libs.versions.android.minSdk.get().toInt() - targetSdk = libs.versions.android.targetSdk.get().toInt() - versionCode = 1 - versionName = "1.0" - } - packaging { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - } - } - buildTypes { - getByName("release") { - isMinifyEnabled = false - signingConfig = signingConfigs.getByName("debug") - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - isCoreLibraryDesugaringEnabled = true - } -} - dependencies { - debugImplementation(libs.compose.ui.tooling) - coreLibraryDesugaring(libs.desugar) + androidRuntimeClasspath(libs.compose.ui.tooling) } compose.desktop {