0

I created a library in multiplatform in latest intellij. My intellj added the outdated gradle version settings.gradle.kts

pluginManagement {
    repositories {
        google()
        gradlePluginPortal()
        mavenCentral()
    }
    resolutionStrategy {
        eachPlugin {
            if (requested.id.namespace == "com.android") {
                useModule("com.android.tools.build:gradle:4.1.2"). // How to update to latest version and what is the use of 4.1.2?
            }
        }
    }
}
rootProject.name = "xyz"

I commented above in my code. Can someone guide how can I update my gradle version to latest and what is the use of 4.1.2 that piece of code?

I tried to remove 4.1.2 below piece of code then I am getting issue

 resolutionStrategy {
     eachPlugin {
         if (requested.id.namespace == "com.android") {
             useModule("com.android.tools.build:gradle:4.1.2")
         }
     }
 }

Error

 Build file '/Users/vmodi/IdeaProjects/abc/build.gradle.kts' line: 1
 
 Plugin [id: 'com.android.application'] was not found in any of the following sources:

gradle-wrapper.properties

 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists

build.gradle.kts

plugins {
    kotlin("multiplatform") version "1.6.21"
    id("com.android.application")
}

group = "com.abc"
version = "0.0.1"

repositories {
    google()
    mavenCentral()
}

kotlin {
    android()
    iosX64()
    iosArm64()
    iosSimulatorArm64()

    sourceSets {
        val ktorVersion = "2.0.0"
        val commonMain by getting {
            dependencies {
                implementation("io.ktor:ktor-client-core:$ktorVersion")
                implementation("io.ktor:ktor-client-logging:$ktorVersion")
                implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion")
                implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion")
                implementation("io.ktor:ktor-client-auth:$ktorVersion")
                implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.2")
                implementation("io.insert-koin:koin-core:3.2.0-beta-1")
            }
        }
        val androidMain by getting {
            dependencies {
                implementation("io.ktor:ktor-client-okhttp:$ktorVersion")
                implementation("io.ktor:ktor-client-logging-jvm:$ktorVersion")
            }
            val iosX64Main by getting
            val iosArm64Main by getting
            val iosSimulatorArm64Main by getting
            val iosMain by creating {
                dependsOn(commonMain)
                iosX64Main.dependsOn(this)
                iosArm64Main.dependsOn(this)
                iosSimulatorArm64Main.dependsOn(this)
                dependencies {
                    implementation("io.ktor:ktor-client-darwin:$ktorVersion")
                }
            }
        }
    }
}

android {
    compileSdk = 21
    sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
    defaultConfig {
        applicationId = "com.abc.kotlinmultiplatform"
        minSdk = 21
        targetSdk = 31
    }
    @Suppress("UnstableApiUsage")
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
}

IntelliJ version

IntelliJ IDEA 2022.1.1 (Ultimate Edition)
Build #IU-221.5591.52, built on May 10, 2022
Licensed to Vivek Modi
For educational use only.
Runtime version: 11.0.14.1+1-b2043.45 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 11.6.5
GC: G1 Young Generation, G1 Old Generation
Memory: 2048M
Cores: 16
Non-Bundled Plugins:
    com.intellij.nativeDebug (221.5591.54)
    org.jetbrains.kotlin-js-inspection-pack-plugin (0.0.9)

Kotlin: 221-1.6.21-release-337-IJ5591.52

After @PylypDukhov suggestion, trying to update gradle 7.0.4 I am getting this weird error

error

Failed to query the value of property 'namespace'.
Package Name not found in /Users/vmodi/IdeaProjects/abc/src/androidMain/AndroidManifest.xml, and namespace not specified. Please specify a namespace for the generated R and BuildConfig classes via android.namespace in the module's build.gradle file like so:

android {
    namespace 'com.example.namespace'
}

settings.gradle.kts

pluginManagement {
    repositories {
        google()
        gradlePluginPortal()
        mavenCentral()
    }
    resolutionStrategy {
        eachPlugin {
            if (requested.id.namespace == "com.android") {
                useModule("com.android.tools.build:gradle:7.0.4")
            }
        }
    }
}
rootProject.name = "LetsGetCheckedKotlinMultiplatform"

Added androidMain

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.abc"/>
Kotlin Learner
  • 3,995
  • 6
  • 47
  • 127
  • Why you even need a `resolutionStrategy`? For comparison, this would be a valid use-case: https://stackoverflow.com/a/71135974/549372 ...just apply the plugin in the module where you need it. – Martin Zeitler May 18 '22 at 13:48

2 Answers2

1

4.1.2 is android gradle plugin version, it's not related to gradle version.

Android gradle plugin is shipped with Android Studio, if you wanna use latest version mentioned by @Egor, you have to use Android Studio.

IntelliJ IDEA supports them with a delay - the last supported version at the moment is 7.0.4, which works fine to me, the only problem you might have with it is the lack of support for the 32 target version of Android - but it's not required to upload the app and will work fine on 32 devices, also you can build release version in AS with newest plugin, and develop in IDEA, as to me it seems more performant in KMM projects.

Phil Dukhov
  • 67,741
  • 15
  • 184
  • 220
  • thanks for great advice. I tried to update my **gradle** to `7.0.4` but it giving me error. I added my error in my question. Please have a look and guide me. Thanks – Kotlin Learner May 18 '22 at 13:15
  • @vivekmodi have you tried opening `/Users/vmodi/IdeaProjects/abc/src/androidMain/AndroidManifest.xml`? Each android module should contain a valid manifest file. – Phil Dukhov May 18 '22 at 14:06
  • I added `package`in my manifest and update to gradle `7.0.4` is working fine now. Thank you so much. One question can we check which android gradle is release from intellij. Any document/site bcoz I cannot find any doc. Do you know about that? – Kotlin Learner May 18 '22 at 17:25
  • @vivekmodi I wasn’t being able to find out, let me know if you reach such info:) – Phil Dukhov May 18 '22 at 20:08
  • 1
    I found this web [page](https://youtrack.jetbrains.com/issue/IDEA-287437) – Kotlin Learner May 19 '22 at 19:33
0

4.1.2 is the version number. To find out what the latest version is, visit Google's Maven Repository. At the time of writing, the latest stable version is 7.2.0, so simply replace "4.1.2" with "7.2.0" and rebuild the project.

Egor
  • 39,695
  • 10
  • 113
  • 130