Root plugins 선택적 사용

유시현·약 3시간 전

Android

목록 보기
49/49

카탈로그는 사용안함

app build.gradle 은 고정

plugins {
    id("com.android.application") version "8.13.2"
    id("org.jetbrains.kotlin.android") version "2.0.21"
}

root build.gradle

plugins {
    id("com.android.application") version "8.13.2" apply false
//    id("org.jetbrains.kotlin.android") version "2.0.21" apply false
}
plugins {
//    id("com.android.application") version "8.13.2" apply false
//    id("org.jetbrains.kotlin.android") version "2.0.21" apply false
}

이렇게 app 의 build.gradle 을 고정하고 root build.gradle 만 선택적으로 사용해봤다. 위의 2개는 잘된다.

근데

plugins {
//    id("com.android.application") version "8.13.2" apply false
    id("org.jetbrains.kotlin.android") version "2.0.21" apply false
}

이 상황에서는 안된다.

Unable to load class 'com.android.build.gradle.api.BaseVariant' com.android.build.gradle.api.BaseVariant

이런 오류발생

이유

id("org.jetbrains.kotlin.android") 을 로드할 때 AGP 관련 클래스가 필요한데 없기 때문이다.

즉 id("org.jetbrains.kotlin.android") 을 로드할려면 id("com.android.application") 가 필요해서 오류가 발생했던것이다.

plugins {
//    id("com.android.application") version "8.13.2" apply false
//    id("org.jetbrains.kotlin.android") version "2.0.21" apply false
}

이 상황에서 잘 되었던 이유는 로드할게 없고 app 모듈에서 같이 로드를 했긴 때문에 문제가 없던 것 이다.


plugins {
    id("com.android.application") version "8.13.2" apply false
    id("org.jetbrains.kotlin.android") version "2.0.21" apply false
}

이거의 의미는 application, kotlin 관련 파일들을 가져오지만 현재 프로젝트에 적용하지 않는다.

chatgpt 피셜

“Kotlin 플러그인이 로드되려면 AGP가 필요해서” 라기보다는,

정확히는 보통 이거야:

빌드 안의 어떤 플러그인/스크립트(서드파티 또는 커스텀)가 com.android.build.gradle.api.BaseVariant를 참조하고 있는데,
root에서 Kotlin 플러그인만 resolve되면서 그 코드가 먼저 로드/평가되는 타이밍이 생기고,
그때 AGP가 클래스패스에 없어서 BaseVariant 로딩이 실패한다.

profile
안드로이드 ,ios 공부하고 있습니다

0개의 댓글