web-dev-qa-db-ja.com

警告:API 'variant.getJavaCompile()'は廃止され、 'variant.getJavaCompileProvider()'に置き換えられました

突然Gradleを同期すると、私はこのエラーが出ます:

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
Affected Modules: app

私はappモジュールのためにこの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年の終わりには機能しなくなるでしょう。

104
Arnyminer Z

この問題はアップデートFabric Gradleバージョン1.28.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.28.0'
    }
}
13
M.Noman

私の場合、それはgmsサービス4.3.0が原因でした。だから私はそれを次のように変更しなければなりませんでした:

com.google.gms:google-services:4.2.0

私はこれを実行して見つけました:

gradlew sync -Pandroid.debug.obsoleteApi=true

ターミナル内。表示に移動->ツールウィンドウ-> Android St​​udioのターミナル。

56
Numan Karaaslan

私は3.3.0にアップデートした後にこの問題に直面します

あなたがgradleファイルにどんなエラーを表示しているのかしていないのであれば、これを引き起こすより新しいAPIにまだ更新していないのはいくつかのプラグインです。どのプラグインであるかを判断するには、次のようにします(3.3.0の発表の 「廃止されたAPIを使用するときのデバッグ情報の向上」 )。

  • 'Android.debug.obsoleteApi = true' gradle.properties ファイルに追加すると、エラーがより詳細に記録されます。
  • もう一度やり直してログの詳細を読んでください。 「問題のある」プラグインの痕跡があるでしょう
  • 確認したら、無効にして問題が解決したかどうかを確認します。
  • プラグインのgithubページに行き、詳細なログと明確な説明が含まれるissueを作成してください。そうすれば、開発者は誰でも簡単に修正できるようになります。
  • 彼らがそれを修正する間、辛抱してください、またはあなたはそれを修正して開発者のためのPRを作成します

他の人に役立つことを願っています

48
Ewoks

これは単なる警告であり、おそらく2019年以前にプラグインのアップデートで修正される予定なので心配しないでください。互換性のあるバージョンのプラグインとgradleを使用することをお勧めします。

より良い経験とパフォーマンスのためにここであなたのプラグインのバージョンとgradleのバージョンをチェックすることができます。

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

スムーズで警告やエラーのないコードを得るために安定版を使ってみてください。

31
Harshil Shah

私も同じ問題に直面しました。そしてしばらく検索した後、google-servicesプラグインの最新バージョン(バージョン4.3.0)を使用しているために警告が発生していることがわかりました。ちなみに、私のアプリケーションでは、このプラグインをFirebase機能に使用していました。次のように、build.gradle(Project)レベルファイルのbuildscriptでgoogle-servicesプラグインをダウングレードするだけでした。

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

build.gradleからGoogleサービスのバージョンを変更します:

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

これは、2つの理由からビルドツールによって吐き出される警告です。
1。プラグインの1つはTaskProviderではなくTaskに依存しています。できることはほとんどありません。
2。 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'の使用法を見つけてください。上記のように交換してください。

タスク構成の回避に関する詳細情報

5
VenomVendor

application gradleからこの行を削除すると、

apply plugin: 'io.fabric'

エラーはもう表示されません。

参照リンクgithub

4
Java coder

クラスパス 'com.Android.tools.build:gradle:3.3.0-alpha13'からクラスパス 'com.Android.tools.build:gradle:3.2.0'に戻ります

これは私のために働いた

プロジェクトをandroidXに移行します。

依存関係はandroidXにアップグレードされます。 androidXコンテンツを使用する場合 プロジェクトをandroidXに移行します

Android St​​udio 3.2以降では、メニューバーから[リファクタリング]> [AndroidXに移行]を選択して、既存のプロジェクトをすばやくAndroidXに移行できます。

依存関係のダウングレードは今回あなたの問題を解決するかもしれません-しかし、推奨されません

2

サポートされなくなったAPIを使用していることがプラグインによって検出されると、そのAPIが使用されている場所を判断するのに役立つ、より詳細な情報を提供できるようになりました。追加情報を見るには、プロジェクトのgradle.propertiesファイルに以下を含める必要があります。

Android.debug.obsoleteApi=true
2
Hamed safari

私の場合、私は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以降のバグです

2
Anggrayudi H

Gradleを gradleに更新する:3.3.0

デフォルトの 'assemble'タスクは通常のバリアントにのみ適用されます。テストバリアントも追加してください。

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

またファブリックを適用するコメント

//apply plugin: 'io.fabric'
2
Krste Moskov

/ - Kotlin Plugin および stdLib )バージョン を1.3.1にアップグレード 私の場合はその警告を解決しました。既存のKotlinのバージョンを次のように置き換えて、プロジェクト全体でKotlinのバージョンを更新します。

ext.kotlin_version = '1.3.1'
1
erluxman

これで問題が解決しました。次のようにbuild.gradle(Project)レベルファイルのbuildscriptでgoogle-servicesプラグインをダウングレードするだけでした。

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
ali sampson

ファブリックプラグインを最新のプロジェクトレベルの評価ファイル(アプリレベルではない)に更新します。私の場合、この行は問題を解決しました

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

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

1)Android.debug.obsoleteApi=truegradle.propertiesに追加します。警告ログの影響を受けるモジュールが表示されます。

2)これらの非推奨の機能を更新します。

  • variant.javaCompileからvariant.javaCompileProvider

  • variant.javaCompile.destinationDirからvariant.javaCompileProvider.get().destinationDir

1
Morgan Koh

ここで一時的な回避策は、あなたが部屋を使用している場合はちょうど1.1.0以上にアップグレード

implementation "Android.Arch.persistence.room:runtime:1.1.0"

それは私のためにこの警告を削除します。

0
Sergio KS

これはよくある質問です。これらの方法を使用しない場合、ソリューションはライブラリを更新しています。 kotlinバージョン、およびfabricprotobufなどのすべての依存関係を更新してください。すべてを更新したことが確実な場合は、ライブラリの作成者。

0
monyag

プロジェクトを維持する(アプリではない)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
}
0
Ven Ren

私の場合

build.gradle(Project)

だった

ext.kotlin_version = '1.2.71'

に更新

ext.kotlin_version = '1.3.0'

問題は今のところ起こっているようです

0
Sam

Gradleのバージョンをダウングレードすることは私のために働きました:

classpath 'com.Android.tools.build:gradle:3.2.0'
0
Naimish Verma