突然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年の終わりには機能しなくなるでしょう。
この問題はアップデート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'
}
}
私の場合、それはgmsサービス4.3.0が原因でした。だから私はそれを次のように変更しなければなりませんでした:
com.google.gms:google-services:4.2.0
私はこれを実行して見つけました:
gradlew sync -Pandroid.debug.obsoleteApi=true
ターミナル内。表示に移動->ツールウィンドウ-> Android Studioのターミナル。
私は3.3.0にアップデートした後にこの問題に直面します
あなたがgradleファイルにどんなエラーを表示しているのかしていないのであれば、これを引き起こすより新しいAPIにまだ更新していないのはいくつかのプラグインです。どのプラグインであるかを判断するには、次のようにします(3.3.0の発表の 「廃止されたAPIを使用するときのデバッグ情報の向上」 )。
他の人に役立つことを願っています
これは単なる警告であり、おそらく2019年以前にプラグインのアップデートで修正される予定なので心配しないでください。互換性のあるバージョンのプラグインとgradleを使用することをお勧めします。
より良い経験とパフォーマンスのためにここであなたのプラグインのバージョンとgradleのバージョンをチェックすることができます。
https://developer.Android.com/studio/releases/gradle-plugin
スムーズで警告やエラーのないコードを得るために安定版を使ってみてください。
私も同じ問題に直面しました。そしてしばらく検索した後、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'
}
}
build.gradle
からGoogleサービスのバージョンを変更します:
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
}
これは、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'
の使用法を見つけてください。上記のように交換してください。
クラスパス 'com.Android.tools.build:gradle:3.3.0-alpha13'からクラスパス 'com.Android.tools.build:gradle:3.2.0'に戻ります
これは私のために働いた
プロジェクトをandroidXに移行します。
依存関係はandroidXにアップグレードされます。 androidXコンテンツを使用する場合 プロジェクトをandroidXに移行します
Android Studio 3.2以降では、メニューバーから[リファクタリング]> [AndroidXに移行]を選択して、既存のプロジェクトをすばやくAndroidXに移行できます。
依存関係のダウングレードは今回あなたの問題を解決するかもしれません-しかし、推奨されません
サポートされなくなったAPIを使用していることがプラグインによって検出されると、そのAPIが使用されている場所を判断するのに役立つ、より詳細な情報を提供できるようになりました。追加情報を見るには、プロジェクトのgradle.propertiesファイルに以下を含める必要があります。
Android.debug.obsoleteApi=true
私の場合、私は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以降のバグです
Gradleを gradleに更新する:3.3.0
デフォルトの 'assemble'タスクは通常のバリアントにのみ適用されます。テストバリアントも追加してください。
Android.testVariants.all { variant ->
tasks.getByName('assemble').dependsOn variant.getAssembleProvider()
}
またファブリックを適用するコメント
//apply plugin: 'io.fabric'
/ - Kotlin ( Plugin および stdLib )バージョン を1.3.1にアップグレード 私の場合はその警告を解決しました。既存のKotlinのバージョンを次のように置き換えて、プロジェクト全体でKotlinのバージョンを更新します。
ext.kotlin_version = '1.3.1'
これで問題が解決しました。次のように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'
}
}
ファブリックプラグインを最新のプロジェクトレベルの評価ファイル(アプリレベルではない)に更新します。私の場合、この行は問題を解決しました
classpath 'io.fabric.tools:gradle:1.25.4'
に
classpath 'io.fabric.tools:gradle:1.28.0'
1)Android.debug.obsoleteApi=true
をgradle.properties
に追加します。警告ログの影響を受けるモジュールが表示されます。
2)これらの非推奨の機能を更新します。
variant.javaCompile
からvariant.javaCompileProvider
variant.javaCompile.destinationDir
からvariant.javaCompileProvider.get().destinationDir
ここで一時的な回避策は、あなたが部屋を使用している場合はちょうど1.1.0以上にアップグレード
implementation "Android.Arch.persistence.room:runtime:1.1.0"
それは私のためにこの警告を削除します。
これはよくある質問です。これらの方法を使用しない場合、ソリューションはライブラリを更新しています。 kotlinバージョン、およびfabric、protobufなどのすべての依存関係を更新してください。すべてを更新したことが確実な場合は、ライブラリの作成者。
プロジェクトを維持する(アプリではない)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
}
私の場合
build.gradle(Project)
だった
ext.kotlin_version = '1.2.71'
に更新
ext.kotlin_version = '1.3.0'
問題は今のところ起こっているようです
Gradleのバージョンをダウングレードすることは私のために働きました:
classpath 'com.Android.tools.build:gradle:3.2.0'