이 빌드에서는 지원 중단 된 Gradle 기능이 사용되어 Gradle 5.0과 호환되지 않습니다.


93

gradle FAILURE가 있습니다.

..."Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0."

케이스 설명 :

  • 프로젝트 코드베이스에 다음 libs를 첨부합니다.

APP / build.gradle

    //(Required) Writing and executing Unit Tests on the JUnit Platform 
testImplementation "org.junit.jupiter:junit-jupiter-api:5.2.0"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.2.0"
    // (Optional) If you need "Parameterized Tests"
testImplementation "org.junit.jupiter:junit-jupiter-params:5.2.0"
    // (Optional) If you also have JUnit 4-based tests
testImplementation "junit:junit:4.12"
testRuntimeOnly "org.junit.vintage:junit-vintage-engine:5.2.0"

testImplementation "io.mockk:mockk:1.8.5"
  • gradle-wrapper.properties를 업데이트했습니다 .

    distributionUrl = https .... gradle- 4.4-all .zip에서 4.7-all로

  • 모든 gradle이 성공적으로 구축 된 후

  • 테스트 calss 생성

    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
      class TestClass {
    
      @Test
      internal fun testName() {
        Assert.assertEquals(2, 1 + 1)
      }
    }
    
  • 테스트를 실행하고 FAILURE 메시지를 받았습니다. 여기에 이미지 설명 입력

  • ./gradlew --warning-mode=all사용되지 않는 기능이 정확히 무엇인지 확인하기 위해 명령 줄 인수 를 사용하여 Gradle 빌드를 실행했습니다 . 여기에 이미지 설명 입력

그 결과 앱을 빌드 할 수없고 FAILURE : 메시지가 표시됩니다.


1
그것은 실패가 아닙니다. 앱은 여전히 ​​컴파일됩니다.
— EpicPandaForce

1
앱은 동일한 실패 메시지와 함께 컴파일됩니다. :-(
— Philipp Buhaievskiy

2
그것은 실패가 아닙니다. 앱이 컴파일되지 않으면 실패합니다. 그것은 기껏해야 경고 입니다.
— EpicPandaForce

@ EpicPandaForce는 불행히도 제가 언급했듯이 실패 메시지입니다. 질문은 메시지를 해석하는 방법에 관한 것이 아니라 어쨌든 귀하의 영향에 대해 감사드립니다.
— Philipp Buhaievskiy

답변:


73

명령 줄 인수 --warning-mode=all로 Gradle 빌드를 실행하여 지원 중단 된 기능이 정확히 무엇인지 확인합니다.

빌드를 수정하는 방법에 대한 지침은 Gradle 문서 링크를 통해 발견 된 문제에 대한 자세한 설명을 제공합니다.

추가 --stacktrace가 플러그인 중 하나가 아닌 빌드 스크립트에서 오래된 코드에 의해 트리거 않다면 경고가 어디에서 오는지 그에게, 당신은 또한 정확하게 지적 할 수있을 것이다.


이 제안을 사용하여 문제에 대한 설명을 업데이트했습니다.
— Philipp Buhaievskiy

13
react-native run-android --warning-mode all내가 달릴 때error: unknown option --warning-mode'
— Yokhen

13
실행 해보세요gradle build --warning-mode=all
— Jordan Daniels

18

이걸로 해봐

cd android && ./gradlew clean && ./gradlew :app:bundleRelease

감사합니다.이 ./gradlew : app : bundleRelease가 작동하고이 ./gradlew bundleRelease가 작동하지 않는 이유를 설명해 주시겠습니까?
— Atikur Rahman Sabuj

perfecct는 내 cordova-9.0 프로젝트에서 나를 위해 일했습니다. : D
— minigeek

2
@AtikurRahmanSabuj ./gradlew 파일이 어떻게 작성되었는지에 따라 다릅니다. 안드로이드의 기본 모듈은 "app"이고 안드로이드 앱은 여러 모듈을 가질 수 있습니다. 또한 ./gradlew는 청소 후에 만 ​​작동해야합니다. gradlew의 모든 작업을 보려면 gradlew에서 사용 가능한 작업을 알려주는 "./gradlew tasks"를 실행합니다.
— Amr Ashraf 2012

Apache Cordova 및 Android 9의 경우 AndroidX를 활성화하여 오류를 해결할 수 있습니다. 활성화하려면 다음을 참조하십시오. cordova.apache.org/announcements/2020/06/29/…
— FC

10

이 오류가 발생했습니다. RN 캐시를 완전히 정리 한 다음 (정교한 프로세스) 릴리스 빌드를 생성 한 경우에만 발생했습니다.

캐시를 정리하고 디버그 빌드를 만든 다음 릴리스 빌드를 만들면 모든 것이 작동했습니다. 조금 걱정되지만 작동합니다.

참고 : 내 깨끗한 명령은 ...

rm -r android/build ; rm -r android/app/src/release/res ; rm -r android/app/build/intermediates ; watchman watch-del-all ; rm -rf $TMPDIR/react-* ; npm start -- --reset-cache


7

내 경우에는 내가 업데이트 된 build.gradle파일을하고 만들 classpath에서 최신 버전 3.5.2으로3.6.3

dependencies {
        classpath("com.android.tools.build:gradle:3.6.3") 
    }

3

타사 종속성을 업데이트하십시오. 예를 들어 종속성을 implementation 'com.github.ybq:Android-SpinKit:1.1.0' 에서 implementation 'com.github.ybq:Android-SpinKit:1.2.0'. 제 경우에는 문제가 해결되었습니다.


정확한에 대한 자세한 설명은 단축키의 제안에 따라
— Hiren

이것은 실수였으며 gradle 버전을 업그레이드하고 가능한 모든 단계를 시도합니다. :(
— Anshul1507

2

gradle-wrapper-properties 파일의 distributionUrl 경로를 다음과 같이 설정하십시오.

distributionUrl = https : //services.gradle.org/distributions/gradle-4.10.2-all.zip


내 gradle에는이 줄이 있습니다. .distributionUrl = https \ : //services.gradle.org/distributions/gradle-4.8.1-bin.zip로 변경하고 작동했습니다. distributionUrl = services.gradle.org/distributions/gradle-4.10.2-all.zip
— Aaron Medvick

2

중요-응답은 REACT-NATIVE VS CODE 터미널에서만 작동합니다.

VisualStudio 코드에서 아래와 같이 실행해야 경고가 생략됩니다.

반응 네이티브 실행 안드로이드 경고 모드 = 모두

아래를 실행하면 터미널에서 오류가 발생합니다. react-native run-android --warning-mode 실행시 모든 오류가 발생합니다 : unknown option --warning-mode '


2

react-native 프로젝트의이 문제에서 저에게 효과적입니다.

이 빌드에서는 지원 중단 된 Gradle 기능이 사용되어 Gradle 7.0과 호환되지 않습니다.

실행 가능한 작업 244 개 : 실행 2 개, 최신 242 개 D8 : 단일 dex 파일에 요청 된 클래스를 넣을 수 없음 (필드 번호 : 67296> 65536) com.android.builder.dexing.DexArchiveMergerException : dex 아카이브 병합 중 오류 : 숫자 .dex 파일의 메서드 참조 수가 64K를 초과 할 수 없습니다. https://developer.android.com/tools/building/multidex.html ... 에서이 문제를 해결하는 방법을 알아보세요 .

저는 이것을 했어요:


공유해 주셔서 감사합니다. 거의 50 분을 보냈습니다. 장치에서 응용 프로그램을 제거하는 것이 나를 위해 일했습니다.
— Anirudh babbar

1

마지막으로 junit 5를 junit 4로 다운 그레이드하고 테스트 환경을 재 구축하기로 결정했습니다.


어떻게 했어요?
— Pratik Butani

Pratik은 6 개월 후 현재로서는이 문제의 주변 상황이 변경되었다고 생각합니다. JUnit 5가 테스트 도구로 사용하기에 편리한 경우 처음부터 조사하는 것이 좋습니다.
— Philipp Buhaievskiy

1

문제에 대한 해결책 :이 빌드에서 더 이상 사용되지 않는 gradle 기능이 사용되어 gradle 6.0과 호환되지 않습니다. android studio이 제공된 솔루션이 저에게 효과적이었습니다.

먼저 프로젝트의 build.gradle 종속성에서 클래스 경로를 변경하십시오. From : classpath 'com.android.tools.build:gradle:3.3.1' To : classpath 'com.android.tools.build:gradle:3.6.1'

그런 다음 프로젝트의 gradle> wrapper 폴더에있는 gradle-wrapper.properties 파일을 변경합니다. From : distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip To : distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

그런 다음 gradle을 동기화하십시오.


1

제 경우에는 Android / build / build.gradle 파일에 multiDexEnabled true를 추가하여 파일을 컴파일했습니다.

문서 에서 '64K 이상의 메서드 참조를 사용하도록 앱을 구성하기 전에 메서드를 포함하여 앱 코드에서 호출하는 총 참조 수를 줄이기위한 조치를 취해야합니다. 앱 코드 또는 포함 된 라이브러리에 의해 정의됩니다. '

defaultConfig {
  applicationId "com.peoplesenergyapp"
  minSdkVersion rootProject.ext.minSdkVersion
  targetSdkVersion rootProject.ext.targetSdkVersion
  versionCode 1
  versionName "1.0"
  multiDexEnabled true // <-add this 
}

0

IntelliJ 및 Gradle을 사용하는 SpringBoot 프로젝트에서 통합 테스트를 실행할 때 "Deprecated Gradle 기능이이 빌드에 사용되어 Gradle 5.0과 호환되지 않습니다"라는 경고가 표시되었습니다. 문제를 해결 한 것은 다음과 같습니다.-이동 : 파일> 설정> 빌드, 실행, 배포- "다음을 사용하여 빌드 및 실행"선택 : Intellij IDEA ( "Gradle"대신)- "다음을 사용하여 테스트 실행"과 동일 설명되지 않음 Gradle이 경고를 표시하는 이유는 무엇입니까? 이로 인해 테스트를 수행하고 작업을 진행할 수 있습니다.


0

AndroidX로 마이그레이션 한 후 이러한 종류의 오류가 수정 되었습니다.

  • 로 이동 리팩터링 ---> 마이그레이션 AndroidX에

0

다음 솔루션은 동일한 경고를 받았기 때문에 도움이되었습니다. 프로젝트 수준 gradle 파일에서 클래스 경로의 gradle 버전을 변경하십시오.

classpath "com.android.tools.build:gradle:3.6.0" to
classpath "com.android.tools.build:gradle:4.0.1"

0

react-native 를 사용하는 경우 프로젝트를 실행하기 전에 먼저 아래 명령을 시도하십시오.

  1. npm install --save-dev jetifier
  2. npx jetify

이제 프로젝트를 다시 실행하십시오. 이것이 효과가 있기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.