From 84dcb2c832e56fb926f456dfbae349ffdae50247 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Fortier Date: Thu, 31 Aug 2023 11:01:41 -0400 Subject: [PATCH 1/2] Update to Kotlin 1.9.10 and AGP 8.1.1 --- androidApp/build.gradle.kts | 12 +++++------- build.gradle.kts | 1 + gradle/libs.versions.toml | 16 ++++++++------- gradle/wrapper/gradle-wrapper.properties | 6 +++--- shared/build.gradle.kts | 25 +++++++----------------- 5 files changed, 25 insertions(+), 35 deletions(-) diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts index ad6c3d6..990202b 100644 --- a/androidApp/build.gradle.kts +++ b/androidApp/build.gradle.kts @@ -1,16 +1,14 @@ -@file:Suppress("UnstableApiUsage") - plugins { - id("com.android.application") - kotlin("android") + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) } android { namespace = "com.mirego.kmp.boilerplate" - compileSdk = 33 + compileSdk = 34 defaultConfig { minSdk = 21 - targetSdk = 33 + targetSdk = 34 applicationId = "com.mirego.kmp.boilerplate" versionCode = 1 @@ -37,7 +35,7 @@ android { compose = true } composeOptions { - kotlinCompilerExtensionVersion = "1.4.7" + kotlinCompilerExtensionVersion = libs.versions.androidComposeCompiler.get() } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 diff --git a/build.gradle.kts b/build.gradle.kts index b1e5eb4..7701c50 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,6 +4,7 @@ plugins { alias(libs.plugins.android.library) apply false alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.kotlin.multiplatform) apply false + alias(libs.plugins.kotlin.native.cocoapods) apply false alias(libs.plugins.serialization) apply false alias(libs.plugins.ktlint) apply false } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 83f396f..4796deb 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,12 +1,13 @@ [versions] -androidGradlePlugin = "8.0.2" +androidComposeCompiler = "1.5.3" +androidGradlePlugin = "8.1.1" androidxActivityCompose = "1.7.2" androidxAppcompat = "1.6.1" -androidxComposeBom = "2023.05.01" -kotlin = "1.8.21" -kotlinxCoroutines = "1.7.1" -kotlinxSerializationJson = "1.5.1" -ktlint = "11.4.0" +androidxComposeBom = "2023.08.00" +kotlin = "1.9.10" +kotlinxCoroutines = "1.7.3" +kotlinxSerialization = "1.6.0" +ktlint = "11.5.1" [libraries] androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidxActivityCompose" } @@ -17,13 +18,14 @@ androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-toolin androidx-compose-material = { group = "androidx.compose.material", name = "material" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" } -kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } +kotlin-native-cocoapods = { id = "org.jetbrains.kotlin.native.cocoapods", version.ref = "kotlin" } serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0586dae..86a7c96 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Nov 16 18:04:19 EST 2021 +#Thu Aug 31 10:40:08 EDT 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 66878db..ac189ab 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -1,20 +1,16 @@ -@file:Suppress("UNUSED_VARIABLE") - -import org.jetbrains.kotlin.gradle.targets.native.tasks.KotlinNativeSimulatorTest - plugins { - kotlin("multiplatform") - kotlin("native.cocoapods") - kotlin("plugin.serialization") - id("com.android.library") - id("org.jlleitschuh.gradle.ktlint") + alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.kotlin.native.cocoapods) + alias(libs.plugins.serialization) + alias(libs.plugins.android.library) + alias(libs.plugins.ktlint) } version = "0.1" kotlin { jvmToolchain(17) - android { + androidTarget { publishAllLibraryVariants() } ios() @@ -75,7 +71,7 @@ android { namespace = "com.mirego.kmp.boilerplate.common" sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") - compileSdk = 33 + compileSdk = 34 defaultConfig { minSdk = 21 } @@ -93,10 +89,3 @@ ktlint { exclude { element -> element.file.path.contains("generated/") } } } - -// Make sure iOS simulator tests are ran on an available device (defaults to iPhone 14). -// Run `/usr/bin/xcrun simctl list devices available` to list the available devices on your machine -// See https://slack-chats.kotlinlang.org/t/535280/i-have-the-same-issue-leaving-a-comment-to-track -tasks.filterIsInstance().forEach { task -> - task.device.set(properties["iosSimulatorName"] as? String ?: "iPhone 14") -} From b4eee77c6a5bba255b4fabfd7c1d8a89abf04c49 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Fortier Date: Thu, 31 Aug 2023 11:04:17 -0400 Subject: [PATCH 2/2] Update README.md --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0f49a90..ce283f3 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@


This repository is the stable base upon which we build our Kotlin Multiplatform projects at Mirego.
We want to share it with the world so you can build awesome multiplatform applications too.

- + @@ -16,7 +16,7 @@ our [blog post](https://shift.mirego.com/en/boilerplate-projects). This boilerplate comes with batteries included, you’ll find: - A brand new [Kotlin Multiplatform](https://kotlinlang.org/docs/multiplatform.html) project using - [Kotlin 1.8.21](https://kotlinlang.org/docs/whatsnew1820.html) and + [Kotlin 1.9.10](https://github.com/JetBrains/kotlin/releases/tag/v1.9.10) and the [Cocoapods Plugin](https://kotlinlang.org/docs/native-cocoapods.html) - An Android app using [Jetpack Compose](https://developer.android.com/jetpack/compose) - An iOS app using [SwiftUI](https://developer.apple.com/xcode/swiftui) @@ -28,7 +28,9 @@ This boilerplate comes with batteries included, you’ll find: - Opinionated Swift linting with [SwiftLint](https://github.com/realm/SwiftLint) - A [CI workflow](.github/workflows/ci.yaml) using [GitHub actions](https://docs.github.com/en/actions) -- Translations with [Trikot.KWord](https://github.com/mirego/trikot/tree/master/trikot-kword) and [Accent](https://www.accent.reviews) (using a scheduled GitHub Actions [workflow](./.github/workflows/accent.yaml)) +- Translations with [Trikot.KWord](https://github.com/mirego/trikot/tree/master/trikot-kword) + and [Accent](https://www.accent.reviews) (using a scheduled GitHub + Actions [workflow](./.github/workflows/accent.yaml)) - A clean and useful `README.md` template (in [english](./BOILERPLATE_README.md)) ## Usage @@ -70,7 +72,7 @@ have their own needs and requirements. Here’s a list of our preferred librarie started: | Category | Libraries | -| ------------------------ | ----------------------------------------------------------------------------------------------------------------------- | +|--------------------------|-------------------------------------------------------------------------------------------------------------------------| | HTTP networking | [`ktor`](https://ktor.io/) | | GraphQL client | [`apollo-kotlin`](https://www.apollographql.com/docs/kotlin/) | | Persisted preferences | [`multiplatform-setttings`](https://github.com/russhwolf/multiplatform-settings) | @@ -81,7 +83,7 @@ started: ## License -Kmp Boilerplate is © 2022 [Mirego](https://www.mirego.com) and may be freely distributed under +Kmp Boilerplate is © 2023 [Mirego](https://www.mirego.com) and may be freely distributed under the [New BSD license](http://opensource.org/licenses/BSD-3-Clause). See the [`LICENSE.md`](https://github.com/mirego/kmp-boilerplate/blob/master/LICENSE.md) file.