sourcetip

경고: 'variant.getJavaCompile()' API가 더 이상 사용되지 않으므로 'variant.getJavaCompileProvider()'로 대체되었습니다.

fileupload 2023. 8. 21. 21:32
반응형

경고: 'variant.getJavaCompile()' API가 더 이상 사용되지 않으므로 'variant.getJavaCompileProvider()'로 대체되었습니다.

Gradle을 동기화할 때 갑자기 다음 오류가 발생합니다.

경고: 'variant.getJavaCompile()' API는 더 이상 사용되지 않으며 'variant.getJavaCompileProvider()'로 대체되었습니다.그것은 2019년 말에 제거될 것입니다.자세한 내용은 https://d.android.com/r/tools/task-configuration-avoidance 관련 모듈: 앱을 참조하십시오.

난 이걸 가지고 있다.build.gradle모듈의 : 다음과 같습니다.

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'

apply plugin: 'io.fabric'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.2"
    defaultConfig {
        applicationId "..."
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "..."
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        versionNameSuffix = version_suffix

        [...]
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

            [...]
        }
        debug {
            [...]
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.61"
    implementation 'androidx.appcompat:appcompat:1.0.0-rc02'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation "com.android.support:preference-v7:28.0.0"
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
    implementation 'com.google.android.material:material:1.0.0-rc02'

    [...]
}

앱을 올바르게 컴파일할 수는 있지만, 조금 귀찮고, 제가 보기에 2019년 말에 무언가가 작동을 멈출 것 같습니다.그것이 무엇이고 어떻게 해결할 것인지에 대한 아이디어가 있습니까?

3.3.0으로 업데이트한 후 이 문제가 발생합니다.

gradle 파일의 오류 상태를 수행하지 않으면 일부 플러그인이 여전히 최신 API로 업데이트되지 않은 것이 원인입니다.어떤 플러그인인지 확인하려면 다음을 수행합니다(3.3.0 발표의 "오래된 API를 사용할 때 더 나은 디버깅 정보" 참조).

  • gradle.properties 파일에 'android.debug.oversoledApi=true'를 추가하면 오류가 더 자세히 기록됩니다.
  • 다시 시도하여 로그 세부 정보를 읽습니다."문제가 있는" 플러그인의 흔적이 있을 것입니다.
  • 식별할 때 사용하지 않도록 설정하고 문제가 사라졌는지 확인합니다.
  • 플러그인의 허브 페이지로 이동하여 자세한 로그와 명확한 설명이 포함된 문제를 생성하여 개발자가 모두를 위해 더 빨리 수정할 수 있도록 도와줍니다.
  • 그들이 그것을 고치는 동안 인내심을 가지거나, 당신이 그것을 고치고 개발자들을 위한 홍보를 만듭니다.

다른 사람들에게 도움이 되길 바랍니다.

이 문제는 이제 Fabric Gradle 버전 1.30.0 업데이트를 통해 해결되었습니다.

업데이트 릴리스:2019년 3월 19일

다음 링크를 참조하십시오. https://docs.fabric.io/android/changelog.html#march-15-2019

프로젝트 수준 Gradle에서 클래스 경로 종속성을 업데이트하십시오.

buildscript {
    // ... repositories, etc. ...

    dependencies {
        // ...other dependencies ...
        classpath 'io.fabric.tools:gradle:1.30.0'
    }
}

저의 경우 gms services 4.3.0에서 발생했습니다.그래서 다음으로 변경해야 했습니다.

com.google.gms:google-services:4.2.0

실행하여 이를 찾았습니다.

gradlew sync -Pandroid.debug.obsoleteApi=true

말기에Android Studio에서 보기 -> 도구 창 -> 터미널로 이동합니다.

이것은 단지 경고일 뿐이며 플러그인 업데이트로 2019년 이전에 수정될 것이므로 걱정하지 마십시오.호환 가능한 버전의 플러그인과 Gradle을 사용하는 것이 좋습니다.

더 나은 경험과 성능을 위해 플러그인 버전과 Gradle 버전을 여기에서 확인할 수 있습니다.

https://developer.android.com/studio/releases/gradle-plugin

안정된 버전을 사용하여 부드럽고 경고/오류가 없는 코드를 사용해 보십시오.

저도 같은 문제에 직면했습니다.그리고 얼마 동안 검색해 본 결과, 최신 버전의 소프트웨어를 사용했기 때문에 경고가 발생하고 있다는 것을 알게 되었습니다.google-services플러그인(버전 4.3.0).참고로 저는 애플리케이션에서 Firebase 기능에 이 플러그인을 사용하고 있었습니다.내가 한 일은 내 것을 격하시키는 것뿐이었습니다.google-services다음과 같이 build.gradle(Project) 수준 파일의 buildscript에 플러그인이 있습니다.

buildscript{
    dependencies {
       // From =>
       classpath 'com.google.gms:google-services:4.3.0'
       // To =>
       classpath 'com.google.gms:google-services:4.2.0'
    }
}

추가android.debug.obsoleteApi=true의 신에게에.gradle.properties경고 로그의 영향을 받는 모듈이 표시됩니다.

사용되지 않는 기능을 업데이트합니다.

  • variant.javaCompilevariant.javaCompileProvider

  • variant.javaCompile.destinationDirvariant.javaCompileProvider.get().destinationDir

합니다.build.gradle:

dependencies {
  classpath 'com.google.gms:google-services:4.2.0'
}

이것은 빌드 도구가 두 가지 이유로 내뱉은 경고입니다.
플러그인 중 하나가 TaskProvider 대신 Task에 의존하고 있는데, 우리가 할 수 있는 일이 별로 없습니다.
태스크 공급자를 지원하는 태스크의 사용을 구성했습니다.

WARNING: API 'variant.getGenerateBuildConfig()' is obsolete and has been replaced with 'variant.getGenerateBuildConfigProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance

WARNING: API 'variant.getJavaCompile()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance

WARNING: API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance

아래와 같이 스니펫을 확인하고 업데이트하십시오.

android {
    <library|application>Variants.all { variant ->
        /* Disable Generating Build config */
        // variant.generateBuildConfig.enabled = true // <- Deprecated
        variant.generateBuildConfigProvider.configure {
            it.enabled = true // Replacement
        }
    }
}

마찬가지로 다음의 용도를 찾습니다.'variant.getJavaCompile()'또는'variant.javaCompile','variant.getMergeResources()'또는'variant.mergeResources'위와 같이 교체합니다.

작업 구성 회피에 대한 자세한 정보

Gradle 버전을 다운그레이드하는 것이 저에게 도움이 되었습니다.

classpath 'com.android.tools.build:gradle:3.2.0'

의 경우 Kotlin(Plugin stdLib) 버전을 1.3.1로 업그레이드하여 해당 경고를 해결했습니다.기존 Kotlin 버전을 다음으로 대체하여 전체 프로젝트에서 Kotlin 버전을 업데이트합니다.

ext.kotlin_version = '1.3.50'

classpath 'com.android에서 돌아갑니다.tools.build:gradle:3.3.0-alpha13'을(를) 클래스 경로 'com.message'에 연결합니다.tools.build:그래들:3.2.0'

이것은 나에게 효과가 있었습니다.

Gradle을 Gradle로 업데이트 중: 3.3.0

기본 '조립' 작업은 일반 변형 모델에만 적용됩니다.테스트 변형도 추가합니다.

android.testVariants.all { variant ->
    tasks.getByName('assemble').dependsOn variant.getAssembleProvider()
}

또한 코멘트 원단 적용

//apply plugin: 'io.fabric'

패브릭 플러그인을 최신 프로젝트 수준의 Gradle 파일(앱 수준이 아님)로 업데이트합니다.저의 경우, 이 선이 문제를 해결했습니다.

classpath 'io.fabric.tools:gradle:1.25.4'

로.

classpath 'io.fabric.tools:gradle:1.29.0'

내 경우에는

build.gradle(Project)

이었다

ext.kotlin_version = '1.2.71'

로 업데이트된.

ext.kotlin_version = '1.3.0'

문제는 일단 사라진 것 같습니다.

저 같은 경우에는 제가 논평을 해야 했습니다.com.google.firebase.firebase-crash플러그인:

apply plugin: 'com.android.application'
// apply plugin: 'com.google.firebase.firebase-crash' <== this plugin causes the error

Android Studio 3.3.0 이후의 버그입니다.

플러그인이 더 이상 지원되지 않는 API를 사용하고 있음을 감지하면 이제 해당 API가 사용되고 있는 위치를 확인하는 데 도움이 되는 보다 자세한 정보를 제공할 수 있습니다.추가 정보를 보려면 프로젝트의 gradle.properties 파일에 다음을 포함해야 합니다.

android.debug.obsoleteApi=true

이 행을 제거하면application gradle:

apply plugin: 'io.fabric'

오류가 더 이상 나타나지 않습니다.

참조 링크 github

프로젝트를 AndroidX로 마이그레이션합니다.

종속성이 AndroidX로 업그레이드되었습니다.따라서 AndroidX 콘텐츠를 사용하려면 프로젝트를 AndroidX로 마이그레이션하십시오.

Android Studio 3.2 이상에서는 메뉴바에서 Refactor > Migrate to AndroidX를 선택하여 기존 프로젝트를 AndroidX로 빠르게 마이그레이션할 수 있습니다.

종속성을 다운그레이드하면 이번에는 문제가 해결될 수 있지만 권장되지는 않습니다.

이것은 나의 문제를 해결했습니다.제가 해야 할 일은 다음과 같이 build.gradle(Project) 수준 파일의 buildscript에서 구글 서비스 플러그인을 다운그레이드하는 것이었습니다.

buildscript{
     dependencies {
        // From =>
        classpath 'com.google.gms:google-services:4.3.0'
        // To =>
        classpath 'com.google.gms:google-services:4.2.0'
        // Add dependency
        classpath 'io.fabric.tools:gradle:1.28.1'
    }
}

여기에 임시 해결 방법이 있습니다. 객실을 사용하는 경우 1.1.0 이상으로 업그레이드하십시오.

implementation "android.arch.persistence.room:runtime:1.1.0"

그것은 나를 위해 이 경고를 제거합니다.

keep you Project(앱 아님) Build.gradle 종속성 클래스 경로 버전 코드가 새 것입니다.

 dependencies {
    classpath 'com.android.tools.build:gradle:3.5.0-beta01'
    classpath 'com.novoda:bintray-release:0.8.1'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

이것은 인기 있는 질문입니다.이러한 방법을 사용하지 않으면 라이브러리를 업데이트하는 것이 해결책입니다.당신의 코틀린 버전과 원단, 프로토토프 등 당신의 모든 종속성을 업데이트해 주세요.모든 내용을 업데이트한 것이 확실하면 라이브러리 작성자에게 문의하십시오.

protof-gradle-plugin을 0.8.10 버전으로 업그레이드하여 문제를 해결했습니다.기존 프로토타입을 다음으로 대체

classpath 'gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.10'

그것은 대부분 쓸모없는 도서관 때문입니다.새 업데이트를 수동으로 확인하려면 다음으로 이동해야 합니다.

분석 > "이름별 검사 실행"

run inspection by name android result

그만하면 충분할 거야. .다른 옵션은 다음을 사용하여 Gradle 종속성 업데이트를 실행하는 것입니다.

./gradlew dependencyUpdates

다음과 같은 보고서가 생성됩니다.

:dependencyUpdates

------------------------------------------------------------
: Project Dependency Updates (report to plain text file)
------------------------------------------------------------

The following dependencies are using the latest milestone version:
 - com.github.ben-manes:gradle-versions-plugin:0.15.0

The following dependencies have later milestone versions:
 - com.google.auto.value:auto-value [1.4 -> 1.4.1]
 - com.google.errorprone:error_prone_core [2.0.19 -> 2.0.21]
 - com.google.guava:guava [21.0 -> 23.0-rc1]
 - net.ltgt.gradle:gradle-apt-plugin [0.9 -> 0.10]
 - net.ltgt.gradle:gradle-errorprone-plugin [0.0.10 -> 0.0.11]

...

프로젝트 수준에서 구글 서비스 업그레이드build.gradle내 문제를 해결했습니다.

업그레이드 후:

dependencies {
    ...
    classpath 'com.google.gms:google-services:4.3.2'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

저도 같은 문제가 있었는데 build.gradle 파일에 kotlin gradle 플러그인 버전을 정의하여 해결했습니다.

이것을 변경합니다.

 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

로.

 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50{or latest version}"

저의 경우에는 이것을 따랐습니다.요약, Gradle App 수준: 변경:

variant.outputs.all { output ->
    variant.assemble.doLast {
        ....
    }
}

로.

variant.outputs.all { output ->
variant.getAssembleProvider().configure() {
    it.doLast { 
        ....
    }
}

다음과 같이 새 공급자 API로 변경합니다.

variant.getJavaCompileProvider().configure() { javaCompile ->
      // You have javaCompile object, you can play with it here. 
}

감사해요.

언급URL : https://stackoverflow.com/questions/52470044/warning-api-variant-getjavacompile-is-obsolete-and-has-been-replaced-with

반응형