diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index 1090c06..279efbc 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -17,8 +17,6 @@ jobs: with: java-version: 17 - name: Build and publish local - run: ./gradlew build publishToMavenLocal syncMultiPlatformLibraryDebugFrameworkIosX64 - - name: Install pods - run: cd sample/ios-app && pod install + run: ./gradlew build publishToMavenLocal :sample:mpp-library:embedAndSignAppleFrameworkForXcode - name: Check iOS run: cd sample/ios-app && set -o pipefail && xcodebuild -scheme TestProj -workspace TestProj.xcworkspace -configuration Debug -sdk iphonesimulator -arch x86_64 build CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO | xcpretty \ No newline at end of file diff --git a/.gitignore b/.gitignore index 77fd544..79c292e 100755 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,6 @@ build Pods xcuserdata local.properties -local.gradle \ No newline at end of file +local.gradle +.kotlin +.DS_Store \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 0873f88..57b5a71 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,6 +2,11 @@ * Copyright 2019 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ +plugins { + alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.detekt) apply false +} + buildscript { repositories { mavenCentral() @@ -16,7 +21,6 @@ buildscript { classpath(libs.mobileMultiplatformGradlePlugin) classpath(libs.kotlinSerializationGradlePlugin) classpath(libs.composeJetBrainsGradlePlugin) - classpath(libs.detektGradlePlugin) } } diff --git a/gradle.properties b/gradle.properties index b244e7a..8d43505 100755 --- a/gradle.properties +++ b/gradle.properties @@ -8,8 +8,8 @@ kotlin.mpp.androidSourceSetLayoutVersion=2 android.useAndroidX=true -moko.android.targetSdk=34 -moko.android.compileSdk=34 +moko.android.targetSdk=36 +moko.android.compileSdk=36 moko.android.minSdk=16 moko.publish.name=MOKO permissions diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index dfb8c44..3bb228c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,19 +1,20 @@ [versions] -kotlinVersion = "1.9.10" -androidAppCompatVersion = "1.6.1" -androidxCoreVersion = "1.9.0" # TODO we have two versions (1.8 + 1.9) - unify them -composeMaterialVersion = "1.4.1" -composeActivityVersion = "1.7.0" -activityVersion = "1.7.0" -materialDesignVersion = "1.8.0" +kotlinVersion = "2.2.0" +androidAppCompatVersion = "1.7.1" +androidxCoreVersion = "1.16.0" # TODO we have two versions (1.8 + 1.9) - unify them +composeMaterialVersion = "1.8.3" +composeActivityVersion = "1.10.1" +activityVersion = "1.10.1" +materialDesignVersion = "1.12.0" androidLifecycleVersion = "2.2.0" androidCoreTestingVersion = "2.2.0" -coroutinesVersion = "1.6.4" -mokoMvvmVersion = "0.16.0" +coroutinesVersion = "1.10.2" +mokoMvvmVersion = "0.16.1" mokoPermissionsVersion = "0.19.1" -composeJetBrainsVersion = "1.7.1" -lifecycleRuntime = "2.6.1" -composeUiVersion = "1.0.1" +composeJetBrainsVersion = "1.8.2" +lifecycleRuntime = "2.9.1" +composeUiVersion = "1.8.3" +detekt = "1.23.8" [libraries] androidxCore = { module = "androidx.core:core", version.ref = "androidxCoreVersion" } @@ -30,12 +31,18 @@ mokoMvvmCore = { module = "dev.icerock.moko:mvvm-core", version.ref = "mokoMvvmV mokoMvvmTest = { module = "dev.icerock.moko:mvvm-test", version.ref = "mokoMvvmVersion" } kotlinTestJUnit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlinVersion" } androidCoreTesting = { module = "androidx.arch.core:core-testing", version.ref = "androidCoreTestingVersion" } - +detekt-cli = { group = "io.gitlab.arturbosch.detekt", name = "detekt-cli", version.ref = "detekt" } +detekt-formatting = { group = "io.gitlab.arturbosch.detekt", name = "detekt-formatting", version.ref = "detekt" } +detekt-libraries = { group = "io.gitlab.arturbosch.detekt", name = "detekt-rules-libraries", version.ref = "detekt" } kotlinGradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlinVersion" } -androidGradlePlugin = { module = "com.android.tools.build:gradle", version = "7.4.2" } -mokoGradlePlugin = { module = "dev.icerock.moko:moko-gradle-plugin", version = "0.4.2" } -mobileMultiplatformGradlePlugin = { module = "dev.icerock:mobile-multiplatform", version = "0.14.2" } +androidGradlePlugin = { module = "com.android.tools.build:gradle", version = "8.11.0" } +mokoGradlePlugin = { module = "dev.icerock.moko:moko-gradle-plugin", version = "0.5.0" } +mobileMultiplatformGradlePlugin = { module = "dev.icerock:mobile-multiplatform", version = "0.14.4" } kotlinSerializationGradlePlugin = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlinVersion" } composeJetBrainsGradlePlugin = { module = "org.jetbrains.compose:compose-gradle-plugin", version.ref = "composeJetBrainsVersion" } -detektGradlePlugin = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version = "1.22.0" } +detektGradlePlugin = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt" } + +[plugins] +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlinVersion" } +detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 58eea2f..7ea3ebc 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Jun 10 21:09:29 CEST 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/permissions-avfoundation/build.gradle.kts b/permissions-avfoundation/build.gradle.kts index c7c9ffe..9f820da 100644 --- a/permissions-avfoundation/build.gradle.kts +++ b/permissions-avfoundation/build.gradle.kts @@ -5,32 +5,34 @@ import dev.icerock.moko.gradle.utils.connectTargetsToSourceSet import dev.icerock.moko.gradle.utils.createMainTest import dev.icerock.moko.gradle.utils.setupDependency +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS plugins { id("org.jetbrains.kotlin.multiplatform") id("dev.icerock.moko.gradle.publication") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } kotlin { - iosArm64() - iosX64() - iosSimulatorArm64() + applyDefaultHierarchyTemplate() - with(this.sourceSets) { - // creation - createMainTest("ios") + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) - // ios dependencies - setupDependency("ios", "common") - connectTargetsToSourceSet( - targetNames = listOf("iosX64", "iosArm64", "iosSimulatorArm64"), - sourceSetPrefix = "ios" - ) + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + implementation(libs.coroutines) + } + } } -} -dependencies { - commonMainApi(projects.permissions) - commonMainImplementation(libs.coroutines) + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions-bluetooth/build.gradle.kts b/permissions-bluetooth/build.gradle.kts index b6a11c3..fa0f26c 100644 --- a/permissions-bluetooth/build.gradle.kts +++ b/permissions-bluetooth/build.gradle.kts @@ -1,19 +1,44 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2024 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "dev.icerock.moko.permissions.bluetooth" + compileSdk = 36 } -dependencies { - commonMainApi(projects.permissions) - commonMainImplementation(libs.coroutines) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + implementation(libs.coroutines) + } + } + } + + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions-camera/build.gradle.kts b/permissions-camera/build.gradle.kts index 5a13f41..00f0e20 100644 --- a/permissions-camera/build.gradle.kts +++ b/permissions-camera/build.gradle.kts @@ -1,20 +1,50 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2024 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "dev.icerock.moko.permissions.camera" + compileSdk = 36 } -dependencies { - commonMainApi(projects.permissions) - iosMainImplementation(projects.permissionsAvfoundation) - commonMainImplementation(libs.coroutines) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + implementation(libs.coroutines) + } + } + + iosMain { + dependencies { + implementation(projects.permissionsAvfoundation) + } + } + } + + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions-compose/build.gradle.kts b/permissions-compose/build.gradle.kts index 381ca67..ba0519c 100644 --- a/permissions-compose/build.gradle.kts +++ b/permissions-compose/build.gradle.kts @@ -1,27 +1,58 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2019 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("org.jetbrains.kotlin.plugin.compose") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) id("org.jetbrains.compose") } android { namespace = "dev.icerock.moko.permissions.compose" + compileSdk = 36 defaultConfig { minSdk = 21 } } -dependencies { - commonMainApi(projects.permissions) - commonMainApi(compose.runtime) - androidMainImplementation(libs.activity) - androidMainImplementation(libs.composeUi) - androidMainImplementation(libs.lifecycleRuntime) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + api(compose.runtime) + } + } + + androidMain { + dependencies { + implementation(libs.activity) + implementation(libs.composeUi) + implementation(libs.lifecycleRuntime) + } + } + } + + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions-contacts/build.gradle.kts b/permissions-contacts/build.gradle.kts index f88efda..1f76f9c 100644 --- a/permissions-contacts/build.gradle.kts +++ b/permissions-contacts/build.gradle.kts @@ -1,19 +1,44 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2024 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "dev.icerock.moko.permissions.contacts" + compileSdk = 36 } -dependencies { - commonMainApi(projects.permissions) - commonMainImplementation(libs.coroutines) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + implementation(libs.coroutines) + } + } + } + + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions-gallery/build.gradle.kts b/permissions-gallery/build.gradle.kts index 58793e3..a6034c7 100644 --- a/permissions-gallery/build.gradle.kts +++ b/permissions-gallery/build.gradle.kts @@ -1,19 +1,44 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2024 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "dev.icerock.moko.permissions.gallery" + compileSdk = 36 } -dependencies { - commonMainApi(projects.permissions) - commonMainImplementation(libs.coroutines) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + implementation(libs.coroutines) + } + } + } + + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions-location/build.gradle.kts b/permissions-location/build.gradle.kts index 6edde28..97c7d9e 100644 --- a/permissions-location/build.gradle.kts +++ b/permissions-location/build.gradle.kts @@ -1,19 +1,44 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2024 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "dev.icerock.moko.permissions.location" + compileSdk = 36 } -dependencies { - commonMainApi(projects.permissions) - commonMainImplementation(libs.coroutines) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + implementation(libs.coroutines) + } + } + } + + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions-microphone/build.gradle.kts b/permissions-microphone/build.gradle.kts index ae82d65..3c0fd75 100644 --- a/permissions-microphone/build.gradle.kts +++ b/permissions-microphone/build.gradle.kts @@ -1,20 +1,50 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2024 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "dev.icerock.moko.permissions.microphone" + compileSdk = 36 } -dependencies { - commonMainApi(projects.permissions) - iosMainImplementation(projects.permissionsAvfoundation) - commonMainImplementation(libs.coroutines) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + implementation(libs.coroutines) + } + } + + iosMain { + dependencies { + implementation(projects.permissionsAvfoundation) + } + } + } + + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions-motion/build.gradle.kts b/permissions-motion/build.gradle.kts index 76800eb..a61cfbb 100644 --- a/permissions-motion/build.gradle.kts +++ b/permissions-motion/build.gradle.kts @@ -1,19 +1,44 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2024 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "dev.icerock.moko.permissions.motion" + compileSdk = 36 } -dependencies { - commonMainApi(projects.permissions) - commonMainImplementation(libs.coroutines) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + implementation(libs.coroutines) + } + } + } + + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions-notifications/build.gradle.kts b/permissions-notifications/build.gradle.kts index 6a7662a..07f0db5 100644 --- a/permissions-notifications/build.gradle.kts +++ b/permissions-notifications/build.gradle.kts @@ -1,20 +1,50 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2024 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "dev.icerock.moko.permissions.notifications" + compileSdk = 36 } -dependencies { - commonMainApi(projects.permissions) - commonMainImplementation(libs.coroutines) - androidMainImplementation(libs.androidxCore) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + implementation(libs.coroutines) + } + } + + androidMain { + dependencies { + implementation(libs.androidxCore) + } + } + } + + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions-storage/build.gradle.kts b/permissions-storage/build.gradle.kts index 3b0d214..f7020d6 100644 --- a/permissions-storage/build.gradle.kts +++ b/permissions-storage/build.gradle.kts @@ -1,19 +1,44 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2024 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "dev.icerock.moko.permissions.storage" + compileSdk = 36 } -dependencies { - commonMainApi(projects.permissions) - commonMainImplementation(libs.coroutines) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + implementation(libs.coroutines) + } + } + } + + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions-test/build.gradle.kts b/permissions-test/build.gradle.kts index fe27741..02beb2d 100644 --- a/permissions-test/build.gradle.kts +++ b/permissions-test/build.gradle.kts @@ -1,23 +1,50 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { id("org.jetbrains.kotlin.multiplatform") - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "dev.icerock.moko.permissions.test" + compileSdk = 36 } -dependencies { - commonMainImplementation(libs.coroutines) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + implementation(libs.coroutines) + } + } - androidMainImplementation(libs.activity) + androidMain { + dependencies { + implementation(libs.activity) + } + } + } - commonMainApi(projects.permissions) + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/permissions/build.gradle.kts b/permissions/build.gradle.kts index 980ab40..7b24422 100644 --- a/permissions/build.gradle.kts +++ b/permissions/build.gradle.kts @@ -1,20 +1,51 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + /* * Copyright 2019 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("com.android.library") id("dev.icerock.moko.gradle.publication") id("dev.icerock.moko.gradle.stub.javadoc") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "dev.icerock.moko.permissions" + compileSdk = 36 } -dependencies { - commonMainImplementation(libs.coroutines) - androidMainImplementation(libs.activity) - androidMainImplementation(libs.lifecycleRuntime) +kotlin { + applyDefaultHierarchyTemplate() + + androidTarget { publishLibraryVariants("release", "debug") } + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ) + + sourceSets { + commonMain { + dependencies { + implementation(libs.coroutines) + } + } + + androidMain { + dependencies { + implementation(libs.activity) + implementation(libs.lifecycleRuntime) + } + } + } + + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } } diff --git a/sample/android-app/build.gradle.kts b/sample/android-app/build.gradle.kts index 6bc7690..e3ebd9b 100644 --- a/sample/android-app/build.gradle.kts +++ b/sample/android-app/build.gradle.kts @@ -1,6 +1,8 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + plugins { id("dev.icerock.moko.gradle.android.application") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { @@ -20,4 +22,7 @@ dependencies { implementation(projects.sample.mppLibrary) implementation(projects.permissionsContacts) + + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) } diff --git a/sample/compose-android-app/build.gradle.kts b/sample/compose-android-app/build.gradle.kts index 1e457e8..80a9f4c 100644 --- a/sample/compose-android-app/build.gradle.kts +++ b/sample/compose-android-app/build.gradle.kts @@ -1,6 +1,9 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS + plugins { id("dev.icerock.moko.gradle.android.application") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) + id("org.jetbrains.kotlin.plugin.compose") id("org.jetbrains.compose") } @@ -22,4 +25,7 @@ dependencies { implementation(projects.sample.mppLibrary) implementation(projects.permissionsCompose) implementation(projects.permissionsCamera) + + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) } diff --git a/sample/ios-app/TestProj.xcodeproj/project.pbxproj b/sample/ios-app/TestProj.xcodeproj/project.pbxproj index f4e082c..f8b1e2f 100644 --- a/sample/ios-app/TestProj.xcodeproj/project.pbxproj +++ b/sample/ios-app/TestProj.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 2B70A10DE02726CA8E6981EB /* Pods_TestProj.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E8D683A7C91DCD56058C7435 /* Pods_TestProj.framework */; }; 45D74FCC22BFDDFD00CAB0C8 /* TestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45D74FCB22BFDDFD00CAB0C8 /* TestViewController.swift */; }; 45F4791D219463C7003D25FA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 45F47912219463C7003D25FA /* LaunchScreen.storyboard */; }; 45F4791E219463C7003D25FA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 45F47914219463C7003D25FA /* Main.storyboard */; }; @@ -24,9 +23,6 @@ 45F4791A219463C7003D25FA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 45F4791B219463C7003D25FA /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 45F4791C219463C7003D25FA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A644D2F1C5377C40A53FCD6A /* Pods-TestProj.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TestProj.release.xcconfig"; path = "Pods/Target Support Files/Pods-TestProj/Pods-TestProj.release.xcconfig"; sourceTree = ""; }; - DFBDF7D3559D080FDCA444A6 /* Pods-TestProj.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TestProj.debug.xcconfig"; path = "Pods/Target Support Files/Pods-TestProj/Pods-TestProj.debug.xcconfig"; sourceTree = ""; }; - E8D683A7C91DCD56058C7435 /* Pods_TestProj.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TestProj.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -34,30 +30,18 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2B70A10DE02726CA8E6981EB /* Pods_TestProj.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0C46713DE6750675C174D0A7 /* Pods */ = { - isa = PBXGroup; - children = ( - DFBDF7D3559D080FDCA444A6 /* Pods-TestProj.debug.xcconfig */, - A644D2F1C5377C40A53FCD6A /* Pods-TestProj.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; 287627F61F319065007FA12B = { isa = PBXGroup; children = ( 45964D362282A1FD00C16658 /* mpp-library */, 45F47910219463C7003D25FA /* src */, 287628001F319065007FA12B /* Products */, - EE1ABB3E79CE541540D3155F /* Frameworks */, - 0C46713DE6750675C174D0A7 /* Pods */, ); indentWidth = 4; sourceTree = ""; @@ -93,14 +77,6 @@ path = Resources; sourceTree = ""; }; - EE1ABB3E79CE541540D3155F /* Frameworks */ = { - isa = PBXGroup; - children = ( - E8D683A7C91DCD56058C7435 /* Pods_TestProj.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -108,11 +84,10 @@ isa = PBXNativeTarget; buildConfigurationList = 287628111F319065007FA12B /* Build configuration list for PBXNativeTarget "TestProj" */; buildPhases = ( - DDE4C06D580BF457BEDF8D0A /* [CP] Check Pods Manifest.lock */, + C544D0ED2E17EBC000E5482B /* ShellScript */, 287627FB1F319065007FA12B /* Sources */, 287627FC1F319065007FA12B /* Frameworks */, 287627FD1F319065007FA12B /* Resources */, - 27BD989196B22F0F966AEC23 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -171,22 +146,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 27BD989196B22F0F966AEC23 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TestProj/Pods-TestProj-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - DDE4C06D580BF457BEDF8D0A /* [CP] Check Pods Manifest.lock */ = { + C544D0ED2E17EBC000E5482B /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -194,19 +154,14 @@ inputFileListPaths = ( ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", ); - name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-TestProj-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; + shellScript = "# Type a script or drag a script file from your workspace to insert its path.\ncd \"$SRCROOT/..\"\n./gradlew :sample:mpp-library:embedAndSignAppleFrameworkForXcode\n"; }; /* End PBXShellScriptBuildPhase section */ @@ -264,12 +219,11 @@ }; 287628121F319065007FA12B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DFBDF7D3559D080FDCA444A6 /* Pods-TestProj.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 4VU932NX78; + DEVELOPMENT_TEAM = DPE97W6WK3; INFOPLIST_FILE = src/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.4; PRODUCT_BUNDLE_IDENTIFIER = dev.icerock.moko.sample.permissions; @@ -283,12 +237,11 @@ }; 287628131F319065007FA12B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A644D2F1C5377C40A53FCD6A /* Pods-TestProj.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 4VU932NX78; + DEVELOPMENT_TEAM = DPE97W6WK3; INFOPLIST_FILE = src/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.4; PRODUCT_BUNDLE_IDENTIFIER = dev.icerock.moko.sample.permissions; diff --git a/sample/mpp-library/build.gradle.kts b/sample/mpp-library/build.gradle.kts index 0cefb52..8bb5f1e 100644 --- a/sample/mpp-library/build.gradle.kts +++ b/sample/mpp-library/build.gradle.kts @@ -1,32 +1,76 @@ +import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS +import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework + /* * Copyright 2019 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ plugins { - id("dev.icerock.moko.gradle.multiplatform.mobile") + id("org.jetbrains.kotlin.multiplatform") + id("com.android.library") id("dev.icerock.mobile.multiplatform.ios-framework") - id("dev.icerock.moko.gradle.detekt") + alias(libs.plugins.detekt) } android { namespace = "com.icerockdev.library" + compileSdk = 36 } -dependencies { - commonMainImplementation(libs.coroutines) +kotlin { + applyDefaultHierarchyTemplate() - commonMainApi(libs.mokoMvvmCore) - commonMainApi(projects.permissions) - commonMainImplementation(projects.permissionsContacts) + androidTarget { publishLibraryVariants("release", "debug") } - androidMainImplementation(libs.lifecycle) + val xcf = XCFramework() + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64() + ).forEach { target -> + target.binaries.framework { + baseName = "MultiPlatformLibrary" + export(projects.permissions) + export(libs.mokoMvvmCore) - commonTestImplementation(libs.mokoMvvmTest) - commonTestImplementation(projects.permissionsTest) - commonTestImplementation(projects.permissionsMicrophone) -} + linkerOpts.add("-dead_strip") + linkerOpts.add("-force_load_swift_libs") + freeCompilerArgs += listOf( + "-Xbinary=bundleId=dev.icerock.moko.sample.permissions", + ) + + xcf.add(this) + isStatic = true + } + } + + sourceSets { + commonMain { + dependencies { + api(projects.permissions) + api(libs.mokoMvvmCore) + implementation(libs.coroutines) + implementation(projects.permissionsContacts) + } + } + + androidMain { + dependencies { + implementation(libs.lifecycle) + } + } + + commonTest { + dependencies { + implementation(libs.mokoMvvmTest) + implementation(projects.permissionsTest) + implementation(projects.permissionsMicrophone) + } + } + } -framework { - export(projects.permissions) - export(libs.mokoMvvmCore) + dependencies { + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.cli) + CONFIGURATION_DETEKT_PLUGINS(libs.detekt.formatting) + } }