このビルドでは非推奨のGradle機能が使用されていたため、Gradle5.0との互換性がありません。


94

Gradleの失敗があります:

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

ケースの説明:

  • 次のライブラリをプロジェクトコードベースに添付します。

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 to 4.7-all

  • そのgradleのすべてが成功を収めた後

  • テストカルスを作成しました

    @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 2018

1
アプリは同じ失敗メッセージでコンパイルされます。:-(
Philipp Buhaievskiy 2018

2
それは失敗ではありません。アプリがコンパイルされなかった場合は失敗になります。それはせいぜい警告です。
EpicPandaForce 2018

@ EpicPandaForce残念ながら、それは私が述べたように失敗のメッセージです。問題は、メッセージをどのように解釈するかではなく、とにかくあなたの影響に感謝します。
PhilippBuhaievskiy18年

回答:


74

コマンドライン引数--warning-mode=allを指定してGradleビルドを実行し、非推奨の機能が正確に何であるかを確認します。

ビルドを修正する方法については、Gradleドキュメントへのリンクとともに見つかった問題の詳細な説明が表示されます。

それに加え--stacktraceて、警告がビルドスクリプトではなく、プラグインの1つにある古いコードによってトリガーされた場合、警告がどこから来たのかを特定することもできます。


この提案を使用して、問題の説明を更新しました。
Philipp Buhaievskiy 2018

13
実行しているときにreact-native run-android --warning-mode all私が取得error: unknown option --warning-mode'
Yokhen

13
実行してみてくださいgradle build --warning-mode=all
ジョーダンダニエルズ

18

これを試してください

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

ありがとう、この./gradlew:app:bundleReleaseが機能し、この./gradlewbundleReleaseが機能しない理由を説明していただけますか。
Atikur Ra​​hmanSabuj20年

D:perfecctは私のコルドバ-9.0のプロジェクトに私のために働いた
minigeek

2
@ AtikurRahmanSabuj。/ gradlewファイルの書き込み方法によって異なります。アンドロイドのデフォルトモジュールは「アプリ」であり、アンドロイドアプリは複数のモジュールを持つことができます。また、。/ gradlewはクリーニング後にのみ機能するはずです。gradlew内のすべてのタスクを表示するには、「。/gradlewtasks」を実行して、gradlewで使用可能なタスクを通知します。
AmrAshraf20年

ApacheCordovaおよびAndroid9の場合、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バージョンをアップグレードして、考えられるすべての手順を試します。:(
Anshul15 0720年


2

重要-回答はREACT-NATIVEVSCODEターミナルでのみ機能します

VisualStudioコードでは、以下のように実行する必要があります。そうすると、その警告は省略されます。

react-native run-android warning-mode = all

以下を実行すると、ターミナルでエラーが発生します。react-nativerun-android--warning-mode allを実行すると、エラーが発生します:unknown option --warning-mode '


2

この問題では、react-nativeのプロジェクトで機能します。

このビルドでは非推奨のGradle機能が使用されていたため、Gradle7.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

最終的に、junit5をjunit4にダウングレードし、テスト環境を再構築することを決定しました。


どうやってやったの?
PratikButani19年

Pratikは、今のところ、6か月後、この問題を取り巻く状況が変わったと思います。JUnit 5をテスト機器として使用するのに便利な場合は、最初から調査することをお勧めします。
PhilippBuhaievskiy19年

1

この問題の解決策:このビルドでは非推奨のgradle機能が使用されていたため、gradle6.0と互換性がありませんでした。androidstudioこの提供されたソリューションは私のために働いた。

まず、プロジェクトのbuild.gradleの依存関係でクラスパスを変更します。From:classpath 'com.android.tools.build:gradle:3.3.1' To: classpath 'com.android.tools.build:gradle:3.6.1'

次に、gradle-wrapper.propertiesファイルに変更を加えます。このファイルはプロジェクトのgradle> wrapperフォルダーにあります。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ファイルにmultiDexEnabledtrueを追加すると、ファイルがコンパイルされます。

ドキュメントに記載されているように、将来的にこれを削除することを検討します。'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プロジェクトで、統合テストを実行すると、「このビルドでは非推奨のGradle機能が使用されているため、Gradle5.0と互換性がありません」という警告が表示されました。問題を解決したのは次のとおりです。-移動先:ファイル>設定>ビルド、実行、展開-「ビルドと実行を使用」の選択:Intellij IDEA(「Gradle」の代わりに)-「テストの実行」と同じ説明されていませんGradleが警告を表示しているのに、テストを実行して作業を進めることができるのはなぜですか。



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.