From f98f23cc23a50f0f4f64516cbaef2aaa02c79a92 Mon Sep 17 00:00:00 2001 From: Mouaad Aallam Date: Mon, 15 May 2023 11:55:35 +0200 Subject: [PATCH 1/2] feat: update the project to AGP 8.x (flamingo) --- .github/workflows/build.yml | 9 +++------ .github/workflows/deploy.yml | 4 +--- examples/android/build.gradle | 2 +- .../android/codex/voice/MainActivity.kt | 2 +- .../android/guides/extension/SearchView.kt | 4 ++-- .../guides/insights/InsightsActivity.kt | 2 +- .../android/showcase/androidview/Demo.kt | 2 +- .../showcase/compose/ui/component/RatingBar.kt | 2 +- extensions/android-loading/build.gradle.kts | 4 ---- extensions/android-paging3/build.gradle.kts | 4 ---- gradle.properties | 2 -- gradle/libs.versions.toml | 13 +++++++------ gradle/wrapper/gradle-wrapper.properties | 2 +- instantsearch-compose/build.gradle.kts | 1 - instantsearch-insights/build.gradle.kts | 18 ++++++++---------- instantsearch-utils/build.gradle.kts | 4 ---- instantsearch/build.gradle.kts | 16 ++++++---------- 17 files changed, 33 insertions(+), 58 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e3a8d3b3e..d5731df9d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,12 +18,11 @@ jobs: - uses: actions/setup-java@v3 with: distribution: temurin - java-version: 11 + java-version: 17 - name: Setup Gradle uses: gradle/gradle-build-action@v2 - with: - gradle-version: wrapper + - name: Run lint run: ./gradlew spotlessCheck @@ -39,15 +38,13 @@ jobs: uses: actions/setup-java@v3 with: distribution: temurin - java-version: 11 + java-version: 17 - name: Setup Android SDK uses: android-actions/setup-android@v2 - name: Setup Gradle uses: gradle/gradle-build-action@v2 - with: - gradle-version: wrapper - name: Run tests run: ./gradlew runDebugUnitTest diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d823ac023..82bd329b9 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -24,15 +24,13 @@ jobs: uses: actions/setup-java@v3 with: distribution: temurin - java-version: 11 + java-version: 17 - name: Setup Android SDK uses: android-actions/setup-android@v2 - name: Setup Gradle uses: gradle/gradle-build-action@v2 - with: - gradle-version: wrapper - name: Upload Artifacts run: ./gradlew clean publish --no-parallel --stacktrace diff --git a/examples/android/build.gradle b/examples/android/build.gradle index 8967ec6bc..27fa0646d 100644 --- a/examples/android/build.gradle +++ b/examples/android/build.gradle @@ -30,7 +30,7 @@ android { kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8 } - packagingOptions { + packaging { resources { excludes += ['META-INF/*.kotlin_module'] } diff --git a/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/codex/voice/MainActivity.kt b/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/codex/voice/MainActivity.kt index 1ab059bfc..d962417d0 100644 --- a/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/codex/voice/MainActivity.kt +++ b/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/codex/voice/MainActivity.kt @@ -71,7 +71,7 @@ class MainActivity : AppCompatActivity(), VoiceSpeechRecognizer.ResultsListener } private fun getPermissionView(): View { - return getPermissionDialog()?.requireView()?.findViewById(R.id.positive) ?: error("permission view not found") + return getPermissionDialog()?.requireView()?.findViewById(com.algolia.instantsearch.voice.R.id.positive) ?: error("permission view not found") } private enum class Tag { diff --git a/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/guides/extension/SearchView.kt b/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/guides/extension/SearchView.kt index d95db84f6..f6f686bb2 100644 --- a/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/guides/extension/SearchView.kt +++ b/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/guides/extension/SearchView.kt @@ -1,4 +1,4 @@ -package com.algolia.instantsearch.examples.android.guides.insights.extension +package com.algolia.instantsearch.examples.android.guides.extension import android.graphics.drawable.Drawable import android.text.Spannable @@ -33,7 +33,7 @@ fun SearchView.showQueryHintIcon( queryHint = if (!showIconHint) { hintText } else { - val textView = findViewById(R.id.search_src_text) + val textView = findViewById(androidx.appcompat.R.id.search_src_text) val textSize = (textView.textSize * 1.25).toInt() hintIcon.setBounds(0, 0, textSize, textSize) SpannableStringBuilder(" ").also { diff --git a/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/guides/insights/InsightsActivity.kt b/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/guides/insights/InsightsActivity.kt index f49881be0..d5e125ab3 100644 --- a/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/guides/insights/InsightsActivity.kt +++ b/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/guides/insights/InsightsActivity.kt @@ -9,7 +9,7 @@ import com.algolia.instantsearch.core.connection.ConnectionHandler import com.algolia.instantsearch.core.hits.connectHitsView import com.algolia.instantsearch.examples.android.R import com.algolia.instantsearch.examples.android.guides.extension.configure -import com.algolia.instantsearch.examples.android.guides.insights.extension.configureSearchView +import com.algolia.instantsearch.examples.android.guides.extension.configureSearchView import com.algolia.instantsearch.examples.android.guides.model.Product import com.algolia.instantsearch.insights.sharedInsights import com.algolia.instantsearch.searchbox.SearchBoxConnector diff --git a/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/showcase/androidview/Demo.kt b/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/showcase/androidview/Demo.kt index 59ac62b38..5fb897a69 100644 --- a/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/showcase/androidview/Demo.kt +++ b/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/showcase/androidview/Demo.kt @@ -225,7 +225,7 @@ fun SearchView.showQueryHintIcon( queryHint = if (!showIconHint) { hintText } else { - val textView = findViewById(R.id.search_src_text) + val textView = findViewById(androidx.appcompat.R.id.search_src_text) val textSize = (textView.textSize * 1.25).toInt() hintIcon.setBounds(0, 0, textSize, textSize) diff --git a/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/showcase/compose/ui/component/RatingBar.kt b/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/showcase/compose/ui/component/RatingBar.kt index 3161404cb..a0f0f7458 100644 --- a/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/showcase/compose/ui/component/RatingBar.kt +++ b/examples/android/src/main/kotlin/com/algolia/instantsearch/examples/android/showcase/compose/ui/component/RatingBar.kt @@ -17,7 +17,7 @@ fun RatingBar( AndroidView( modifier = modifier, factory = { context -> - RatingBarView(context, null, R.attr.ratingBarStyleIndicator).apply { + RatingBarView(context, null, androidx.appcompat.R.attr.ratingBarStyleIndicator).apply { setIsIndicator(false) step?.let { stepSize = it } setOnRatingBarChangeListener { ratingBar, rating, _ -> diff --git a/extensions/android-loading/build.gradle.kts b/extensions/android-loading/build.gradle.kts index c1eec07f0..be9a7d844 100644 --- a/extensions/android-loading/build.gradle.kts +++ b/extensions/android-loading/build.gradle.kts @@ -23,10 +23,6 @@ android { freeCompilerArgs += listOf("-Xexplicit-api=strict") } - buildFeatures { - buildConfig = false - } - testOptions.unitTests.apply { isIncludeAndroidResources = true isReturnDefaultValues = true diff --git a/extensions/android-paging3/build.gradle.kts b/extensions/android-paging3/build.gradle.kts index fa0779ff1..56bbf6e97 100644 --- a/extensions/android-paging3/build.gradle.kts +++ b/extensions/android-paging3/build.gradle.kts @@ -27,10 +27,6 @@ android { ) } - buildFeatures { - buildConfig = false - } - testOptions.unitTests.apply { isIncludeAndroidResources = true isReturnDefaultValues = true diff --git a/gradle.properties b/gradle.properties index a58314e7c..50d526146 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,11 +1,9 @@ # Kotlin kotlin.code.style=official kotlin.mpp.stability.nowarn=true -kotlin.mpp.enableCompatibilityMetadataVariant=true # Android android.useAndroidX=true -android.disableAutomaticComponentCreation=true kotlin.mpp.androidSourceSetLayoutVersion=2 # Lib diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 366b979bf..4d7083ea3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,9 @@ [versions] -kotlin = "1.8.10" -composeUi = "1.3.3" -composeCompiler = "1.4.2" -coroutines = "1.6.4" -ktor = "2.2.4" +kotlin = "1.8.21" +composeUi = "1.4.3" +composeCompiler = "1.4.7" +coroutines = "1.7.1" +ktor = "2.3.0" work = "2.8.0" [libraries] @@ -18,6 +18,7 @@ ktor-client-okhttp = { group = "io.ktor", name = "ktor-client-okhttp", version.r kotlinx-atomicfu = { group = "org.jetbrains.kotlinx", name = "atomicfu", version = "0.20.0" } kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "coroutines" } kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutines" } +kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version = "1.5.1" } # android androidx-compose-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "composeUi" } @@ -52,6 +53,6 @@ logback-classic = { group = "ch.qos.logback", name = "logback-classic", version [plugins] kotlin-multiplaform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } -android = { id = "com.android.library", version = "7.4.2" } +android = { id = "com.android.library", version = "8.0.1" } maven-publish = { id = "com.vanniktech.maven.publish", version = "0.24.0" } spotless = { id = "com.diffplug.gradle.spotless", version = "6.16.0" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bdc9a83b1..37aef8d3f 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.0.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/instantsearch-compose/build.gradle.kts b/instantsearch-compose/build.gradle.kts index 11899ab21..5951b1ffe 100644 --- a/instantsearch-compose/build.gradle.kts +++ b/instantsearch-compose/build.gradle.kts @@ -24,7 +24,6 @@ android { } buildFeatures { - buildConfig = false compose = true } diff --git a/instantsearch-insights/build.gradle.kts b/instantsearch-insights/build.gradle.kts index 188f7d731..335a6a946 100644 --- a/instantsearch-insights/build.gradle.kts +++ b/instantsearch-insights/build.gradle.kts @@ -19,10 +19,6 @@ android { targetCompatibility = JavaVersion.VERSION_1_8 } - buildFeatures { - buildConfig = false - } - testOptions.unitTests.apply { isIncludeAndroidResources = true isReturnDefaultValues = true @@ -61,38 +57,40 @@ kotlin { optIn("com.algolia.instantsearch.InternalInstantSearch") } } - val commonMain by getting { + + commonMain { dependencies { implementation(project(":instantsearch-utils")) api(libs.algolia.client) + implementation(libs.kotlinx.serialization.json) } } - val commonTest by getting { + commonTest { dependencies { implementation(libs.test.kotlin.common) implementation(libs.test.kotlin.annotations) implementation(libs.test.coroutines) } } - val jvmMain by getting { + named("jvmMain") { dependencies { implementation(libs.test.kotlin.junit) implementation(libs.ktor.client.okhttp) } } - val jvmTest by getting { + named("jvmTest") { dependencies { implementation(libs.logback.classic) } } - val androidMain by getting { + named("androidMain") { dependencies { implementation(libs.ktor.client.okhttp) implementation(libs.androidx.core) implementation(libs.androidx.work) } } - val androidUnitTest by getting { + named("androidUnitTest") { dependencies { implementation(libs.test.kotlin.junit) implementation(libs.test.androidx.runner) diff --git a/instantsearch-utils/build.gradle.kts b/instantsearch-utils/build.gradle.kts index 9a3e48d0b..832d99033 100644 --- a/instantsearch-utils/build.gradle.kts +++ b/instantsearch-utils/build.gradle.kts @@ -18,10 +18,6 @@ android { targetCompatibility = JavaVersion.VERSION_1_8 } - buildFeatures { - buildConfig = false - } - testOptions.unitTests.apply { isIncludeAndroidResources = true isReturnDefaultValues = true diff --git a/instantsearch/build.gradle.kts b/instantsearch/build.gradle.kts index 40ba1df8c..ea1fa6c6d 100644 --- a/instantsearch/build.gradle.kts +++ b/instantsearch/build.gradle.kts @@ -19,10 +19,6 @@ android { targetCompatibility = JavaVersion.VERSION_1_8 } - buildFeatures { - buildConfig = false - } - testOptions.unitTests.apply { isIncludeAndroidResources = true isReturnDefaultValues = true @@ -51,16 +47,17 @@ kotlin { optIn("kotlinx.coroutines.ExperimentalCoroutinesApi") } } - val commonMain by getting { + commonMain { dependencies { api(project(":instantsearch-core")) api(project(":instantsearch-insights")) api(project(":instantsearch-utils")) implementation(libs.algolia.client) implementation(libs.algolia.telemetry) + implementation(libs.kotlinx.coroutines.core) } } - val commonTest by getting { + commonTest { dependencies { implementation(libs.test.kotlin.common) implementation(libs.test.kotlin.annotations) @@ -68,14 +65,13 @@ kotlin { implementation(libs.test.ktor.client.mock) } } - val jvmMain by getting - val jvmTest by getting { + named("jvmTest") { dependencies { implementation(libs.test.kotlin.junit) implementation(libs.test.mockk) } } - val androidMain by getting { + named("androidMain") { dependencies { api(libs.ktor.client.okhttp) api(libs.androidx.core) @@ -84,7 +80,7 @@ kotlin { api(libs.google.material) } } - val androidUnitTest by getting { + named("androidUnitTest") { dependencies { implementation(libs.test.kotlin.junit) implementation(libs.test.androidx.runner) From 37ca2adee204e98cab41672e7830724af7f8e209 Mon Sep 17 00:00:00 2001 From: Mouaad Aallam Date: Mon, 15 May 2023 11:59:03 +0200 Subject: [PATCH 2/2] apply lint changes --- .../src/commonJvm/kotlin/com/algolia/instantsearch/util/uuid.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/instantsearch-utils/src/commonJvm/kotlin/com/algolia/instantsearch/util/uuid.kt b/instantsearch-utils/src/commonJvm/kotlin/com/algolia/instantsearch/util/uuid.kt index d15df7aca..59f84fa45 100644 --- a/instantsearch-utils/src/commonJvm/kotlin/com/algolia/instantsearch/util/uuid.kt +++ b/instantsearch-utils/src/commonJvm/kotlin/com/algolia/instantsearch/util/uuid.kt @@ -5,4 +5,3 @@ import java.util.* public actual fun randomUuid(): String { return UUID.randomUUID().toString() } -