이 빌드에서는 지원 중단 된 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.