Ошибка синхронизации Gradle: инициализируйте хотя бы одну цель Kotlin в «app (:app)» при применении специального плагинаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка синхронизации Gradle: инициализируйте хотя бы одну цель Kotlin в «app (:app)» при применении специального плагина

Сообщение Anonymous »

Я пытаюсь реализовать собственный плагин Gradle для своего модуля приложения в многоплатформенном проекте Kotlin, но постоянно сталкиваюсь с этой ошибкой, когда применяю свой собственный плагин и проект синхронизации.
Ошибка говорит о необходимости инициализировать цель в модуле приложения, но я уже инициировал ее.
The Stacktrace:

Код: Выделить всё

> Configure project :app
mmd is Coming
com.android.application
e: Please initialize at least one Kotlin target in 'app (:app)'.
Read more https://kotl.in/set-up-targets

w: The following Kotlin source sets were configured but not added to any Kotlin compilation:
* commonMain
* commonTest
You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
See https://kotl.in/connecting-source-sets

w: Missing 'androidTarget()' Kotlin target in multiplatform project 'app (:app)'.
The Android Gradle plugin was applied without creating a corresponding 'android()' Kotlin Target:

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

kotlin {
androidTarget() // \ com.android.build.api.dsl.ApplicationExtension

* Try:

> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

* Exception is:
java.lang.NoClassDefFoundError: com/android/build/api/dsl/ApplicationExtension
at ApplicationGradlePlugin.apply(ApplicationGradlePlugin.kt:24)
...
Caused by: java.lang.ClassNotFoundException: com.android.build.api.dsl.ApplicationExtension
at org.gradle.internal.classloader.VisitableURLClassLoader$InstrumentingVisitableURLClassLoader.findClass(VisitableURLClassLoader.java:187)
...  215 more

CONFIGURE FAILED in 6s
Мой собственный плагин в BuildSrc:

Код: Выделить всё

class ApplicationGradlePlugin : Plugin {
override fun apply(target: Project) {
with(target) {
val libs = extensions.getByType().named("libs")

println("mmd is Coming")
println(libs.findPlugin("androidApplication").get().get().pluginId)
pluginManager.apply(libs.findPlugin("kotlinMultiplatform").get().get().pluginId)

pluginManager.apply(libs.findPlugin("androidApplication").get().get().pluginId)

extensions.getByType(ApplicationExtension::class.java)

println("mmd done his job..")
}
}
}
Файл build.gradle.kts в модуле приложения:

Код: Выделить всё

import org.jetbrains.compose.desktop.application.dsl.TargetFormat

plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.composeMultiplatform)
alias(libs.plugins.composeCompiler)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.androidApplication)
id("com.sample.myproject.application-plugin")// --> this is my custom plugin
}

kotlin {
android {
compilations.all {
kotlinOptions.jvmTarget = "21"
}
}

jvm("desktop")

sourceSets {
val desktopMain by getting

androidMain.dependencies {
// android dependencies
}
commonMain.dependencies {
// common dependencies
}
desktopMain.dependencies {
// desktop dependencies
}
}
}

android {
namespace = "com.sample.myproject"
compileSdk = libs.versions.android.compileSdk.get().toInt()

defaultConfig {
applicationId = "com.sample.myproject"
// other configurations
}
Я очистил свой плагин, добавил конфигурации шаг за шагом и синхронизировал каждый раз, когда добавляю это:

Код: Выделить всё

extensions.getByType(ApplicationExtension::class.java)
это выдает ошибку.
Я инициировал цели в своих плагинах следующим образом:

Код: Выделить всё

extensions.getByType(KotlinMultiplatformExtension::class).apply {
androidTarget()
jvm("desktop")
}
но это не имело никакого значения.


Подробнее здесь: https://stackoverflow.com/questions/792 ... in-app-app
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»