API“variant.getExternalNativeBuildTasks()”是过时的,已被替

2019-05-12 19:30发布

采用了Android 3.3工作室金丝雀11与gradle这个插件版本3.3.0-alpha11 。 尝试同步gradle这个时候它引发以下错误

WARNING: API 'variant.getExternalNativeBuildTasks()' is obsolete and has been 
replaced with 'variant.getExternalNativeBuildProviders()'.
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

单击错误使我此行的gradle这个文件

applicationVariants.all { variant ->
            variant.outputs.all {
                outputFileName = "${variant.name}-${variant.versionName}.apk"
            }
        }

究竟是什么我需要在这里改变?

项目build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        mavenCentral() // jcenter() works as well because it pulls from Maven Central
        maven { url "https://maven.google.com" }
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0-alpha11'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath "io.realm:realm-gradle-plugin:4.1.1"
        classpath 'com.google.gms:google-services:3.2.1'
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://maven.google.com" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

// Define versions in a single place
ext {
    // Sdk and tools
    minSdkVersion = 21
    targetSdkVersion = 27
    compileSdkVersion = 27
    buildToolsVersion = '27.0.3'

    // App dependencies
    supportLibraryVersion = '27.1.1'
    appCompactLibraryVersion = '27.1.1'
    playServicesVersion = '15.0.1'
    firebaseVersionCore = '16.0.1'
    firebaseVersionPerf = '16.0.0'
    firebaseVersionMessaging = '17.1.0'

    //lottie
    lottieVersion = '2.5.0'
}

应用的build.gradle

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.25.4'
    }
    buildscript {
        repositories {
            maven { url "https://maven.google.com" }
            maven { url 'https://maven.fabric.io/public' }
            mavenCentral()

        }

        dependencies {
            // These docs use an open ended version so that our plugin
            // can be updated quickly in response to Android tooling updates

            // We recommend changing it to the latest version from our changelog:
            // https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
            classpath 'io.fabric.tools:gradle:'
        }
    }
}
apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'
repositories {
    maven { url 'https://maven.fabric.io/public' }
}

apply plugin: 'io.fabric'
apply plugin: 'realm-android'

android {

    realm {
        syncEnabled = false
    }

    dexOptions {
        javaMaxHeapSize "4g"
    }

    compileSdkVersion rootProject.ext.compileSdkVersion

    defaultConfig {
        applicationId "example.com"
        minSdkVersion rootProject.ext.minSdkVersion
        multiDexEnabled true
        versionCode mVersionCode
        versionName mVersionName
        vectorDrawables.useSupportLibrary = true

    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    buildTypes {

        applicationVariants.all { variant ->
            variant.outputs.all {
                outputFileName = "${variant.name}-${variant.versionName}.apk"
            }
        }

        release {
            shrinkResources true
            minifyEnabled true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            lintOptions {
                disable 'MissingTranslation'
            }

            applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "${variant.name}-${variant.versionName}.apk"
                }
            }

        }
        debug {
            shrinkResources true
            minifyEnabled true
            useProguard true
            debuggable true
            versionNameSuffix '-DEBUG'
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'debug-proguard-rules.pro'

            ext.enableCrashlytics = false
            crunchPngs false

        }
    }

    flavorDimensions "default"

    lintOptions {

        checkReleaseBuilds false

    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
    }
    buildToolsVersion '28.0.2'
}

configurations {
    implementation.exclude group: "org.apache.httpcomponents", module: "httpclient"
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation "com.android.support:appcompat-v7:$rootProject.appCompactLibraryVersion"
    implementation "com.android.support:support-compat:$rootProject.supportLibraryVersion"
    implementation "com.android.support:mediarouter-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:cardview-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:design:$rootProject.supportLibraryVersion"


    api 'com.squareup.retrofit2:retrofit:2.4.0'
    api 'com.squareup.okhttp3:okhttp:3.11.0'
    api 'com.squareup.okhttp3:logging-interceptor:3.10.0'
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.daimajia.easing:library:2.0@aar'
    implementation 'com.daimajia.androidanimations:library:2.3@aar'

    implementation 'com.akexorcist:googledirectionlibrary:1.0.5'
    implementation 'io.reactivex:rxandroid:1.2.1'
    implementation 'io.reactivex:rxjava:1.3.0'
    // Wifi hotspot library
    implementation 'cc.mvdan.accesspoint:library:0.2.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'org.jsoup:jsoup:1.10.3'
    api "com.airbnb.android:lottie:$rootProject.lottieVersion"
    implementation 'com.android.support:support-v4:27.1.1'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    testImplementation 'junit:junit:4.12'
    implementation 'com.jakewharton:butterknife:8.8.1'

    debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
    releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'

    implementation 'com.googlecode.libphonenumber:libphonenumber:8.2.0'

    implementation "com.google.android.gms:play-services-base:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-cast-framework:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-auth:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-identity:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-awareness:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-cast:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-drive:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-location:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-maps:$rootProject.playServicesVersion"

    implementation "com.google.firebase:firebase-core:$rootProject.firebaseVersionCore"
    implementation "com.google.firebase:firebase-perf:$rootProject.firebaseVersionPerf"
    implementation "com.google.firebase:firebase-messaging:$rootProject.firebaseVersionMessaging"
    implementation "com.google.firebase:firebase-analytics:$rootProject.firebaseVersionCore"


    api('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
        transitive = true
    }
    api('com.crashlytics.sdk.android:answers:1.4.1@aar') {
        transitive = true
    }
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    api project(path: ':libraryBTHelper')
    api project(':bkk_rush')

    debugApi 'com.amitshekhar.android:debug-db:1.0.3'
    api "org.jdeferred:jdeferred-android-aar:1.2.6"
    implementation 'com.android.support:gridlayout-v7:27.1.1'
}

apply plugin: 'com.google.gms.google-services'

我跳过了在应用程序/文件的build.gradle一些常量和其他敏感信息。

Answer 1:

该问题已在其最新发布的'io.fabric.tools:gradle:1.28.0'

1.28.0更新您的gradle都布工具

buildscript {
  // ... repositories, etc. ...

   dependencies {
       // ...other dependencies ...
       classpath 'io.fabric.tools:gradle:1.28.0'
   }
}

有关详细信息https://github.com/firebase/firebase-android-sdk/issues/198#issuecomment-473435453



Answer 2:

编辑

此问题已被固定在织物1.28.0 。 在你build.gradle项目层面的,添加以下行:

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

以前的答案

这种事我更新的Android工作室到3.3.0之后。 apply plugin: 'io.fabric'是原因。 我已经发出了错误报告,以火力地堡队这个问题。

你有3种选择:

  • 等到面料插件的下一个版本发布。 检查最新版本在这里 。

  • 降级到Android Studio中3.2.1 。

  • 注释掉io.fabric插件。

build.gradle您的应用程序的模块:

apply plugin: 'com.android.application'
// apply plugin: 'io.fabric' <== this plugin causes the error

但是,您仍然可以构建和运行项目,即使出现此错误。 只是忽略它。



Answer 3:

在应用的build.gradle,对降级的gradle这个稳定版本:

classpath 'com.android.tools.build:gradle:3.2.1'

这种事我更新后,Android工作室到3.3,临时解决方案,直到他们解决吧!

编辑:你不需要降级的Android工作室!



Answer 4:

不知道实际的问题是什么,但注释掉相关的项目解决问题的依赖关系crashlytics。



Answer 5:

UPDATE截至今天,你可以使用的classpath 'io.fabric.tools:gradle:1.28.0'来解决这个问题!

如果注释掉Crashlytics的插件io.fabric上的应用程序文件的gradle暂时为你工作

//apply plugin: 'io.fabric'

然后升级上项目gradle这个文件你的gradle面料依赖将永久解决这一问题:

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

注意:这不会删除警告,但让你使用Crashlytics与AS3.3 +



Answer 6:

它证实为错误的Crashlytics和他们正在做这个工作。

https://issuetracker.google.com/issues/116408637

从谷歌受让人引用:

JE ... @ google.com#22 2019年1月23日上午01时40分
大家好,

感谢您的耐心等待。

它看起来像在所有情况下的错误是从crashlytics快到了,我已经提交了错误他们。

我将让你在状态更新。

对于我来说,我的调试应用程序只是运行,而忽略警告没有评论Crashlytics或结构的工作我的设备上的罚款。 我还没有尝试进行生产。

更新:

谷歌问题跟踪器有纪念这一问题作为不会解决(不可行),因为所有的问题来自Crashlytics,并让被Crashlytics团队完成修复(尽管它们是相同的Google员工...)。

他们建议遵循此链接Crashlytics更新:

https://github.com/firebase/firebase-android-sdk/issues/198

注:我仍然使用过Android Studio 3.3 io.fabric.tools:gradle:1.26.0没有任何评论的Craslytics和它的工作在我调试的应用程序的罚款。

更新:

我现在可以证实,它工作正常,在我制作/发行版本的应用程序。 我怎么知道它的工作原理? 因为它送我回一个崩溃报告-_-”

总之,只要忽略警告,他们最终应该修复它。

噢,刚读,它已经固定面料1.28.0 :)



Answer 7:

从2019年1月24日最新消息

信息在这里https://issuetracker.google.com/issues/116408637

我们需要等待,直到Crashlytics想出了一个解决办法,这里是GitHub上的问题开

https://github.com/firebase/firebase-android-sdk/issues/198

我使用的是现在不发表评论io.fabric插件的唯一方法是降级的gradle我和我的升级面料类路径(这是工作在我的生产应用程序)

 dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath 'com.google.gms:google-services:4.2.0'
        classpath 'io.fabric.tools:gradle:1.27.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }


Answer 8:

正如有人说的,问题是用布/ Crashlytics。

apply plugin: 'io.fabric'

这是对Crashlytics /火力地堡边的一个错误,请查看以下链接,看到的错误”状态: https://github.com/firebase/firebase-android-sdk/issues/198



Answer 9:

问题跟踪可能指的是“懒任务配置” -

这至少是配置回避的任务提示。

但一个可能能够防止访问的这种过时的方法BaseVariantImpl ,当variant.outputs.all不会访问该方法(内部) -或当检查可以防止访问; 或者通过它访问时变种的名字; 或以某种方式禁用的变体外部本地构建任务。 也看到了单变项目同步选项,而似乎有关。

或等待构建工具 3.3.0-alpha123.3.0-beta1 ......这甚至不是一个release candidate ,因此投资于太多的时间可能是毫无意义的-除了用它来提交新的错误报告。

新的快速反馈 按钮看起来还是最有前途的。



Answer 10:

出现这种情况是由于您的Android工作室于Android 3.2.0工作室到Android 3.3.0工作室的更新。 更新IO.Fabric你的摇篮相关性(项目)。 喜欢:

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

并更新你的科特林版本

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.20"

这将解决这个问题。 谢谢



Answer 11:

生成日志打印如何调试这一点,特别是你需要运行建立与-Pandroid.debug.obsoleteApi=true ,那将打印调用堆栈跟踪到弃用的API,你就能够推测哪个插件/代码调用它。

如果它最终被你的代码 -使用新的供应商API( 读懒惰任务配置DOC )

如果它来自其他插件 -他们报告与堆栈跟踪和警示信息,也许提交一个补丁。 由于在此情况下,其相关io.fabric问题。



Answer 12:

这已被固定在织物gradle这个插件,1.28.0,今天正式启用的最新版本。 这些方法都有一个顶层的build.gradle:

buildscript {
// ... repositories, etc. ...

dependencies {
    // ...other dependencies ...
    **classpath 'io.fabric.tools:gradle:1.28.0'**
}


Answer 13:

当我打开这个项目,我按下Run migrations按钮出现在从右下角Android Studio 。 进行迁移,问题得到了解决,而不注释掉Crashlytics依赖。



Answer 14:

在模块更改源代码兼容build.gradle文件到Java 8修复该问题

compileOptions {
    sourceCompatibility 1.8
    targetCompatibility 1.8
}

请确保在这些行后重建项目



Answer 15:

这将解决该错误:在任务栏上点击工具 - > Kotlin->配置科特林在项目



Answer 16:

就我而言,我需要使用io.fabric插件,以及解决办法是,更新到最新的面料工具gradle这个版本:

classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'io.fabric.tools:gradle:1.27.0'


Answer 17:

对于那些谁需要保持应用的面料插件,临时解决办法是回到以前版本的gradle这个在项目层面。

更改CLASSPATH版本com.android.tools.build:gradle:3.2.1



Answer 18:

正是有了最新的一个问题gradle (在我的情况3.3.2 )版和Fabric.io插件。 现在通过新版本的用户解决应该有这个在他们的顶级build.gradle

buildscript {
   // ... repositories, etc. ...

    dependencies {
        // ...other dependencies ...
        classpath 'io.fabric.tools:gradle:1.28.0'
    }
}


Answer 19:

对于我来说,我按照这些步骤:1.升级项目级的build.gradle的摇篮依赖。

        classpath 'io.fabric.tools:gradle:1.28.0'
  1. 添加此插件依赖性低于适用的插件:在应用级的build.gradle“com.android.application”。

      apply plugin: 'io.fabric' 
  2. 与同步的gradle文件的项目。



Answer 20:

首先这不是一个错误

它的警告

其显示当更新gradle这个到3.3.0常发生,因为io.fabric所以等到更新布当前版本,其中警告仍然显示是“io.fabric.tools:gradle:1.27.1”



文章来源: API 'variant.getExternalNativeBuildTasks()' is obsolete and has been replaced with 'variant.getExternalNativeBuildProviders()