代码之家  ›  专栏  ›  技术社区  ›  Jude Fernandes

API'variant.getExternalNativeBuildTasks()'已过时,已替换为'variant.getExternalNativeBuildProviders()

  •  240
  • Jude Fernandes  · 技术社区  · 6 年前

    在gradle插件版本中使用androidstudio3.3canary11 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'
    

    20 回复  |  直到 6 年前
        1
  •  287
  •   Naveed Ahmad    5 年前

    这个问题已经在他们的最新版本中修复了 'io.fabric.tools:gradle:1.30.0'

    请更新您的gradle fabric工具 1.30.0

    buildscript {
      // ... repositories, etc. ...
    
       dependencies {
           // ...other dependencies ...
           classpath 'io.fabric.tools:gradle:1.30.0'
       }
    }
    

    更多细节 https://github.com/firebase/firebase-android-sdk/issues/198#issuecomment-473435453

        2
  •  248
  •   Anggrayudi H    6 年前

    此问题已在中修复 Fabric 1.28.0 . 在你的 build.gradle

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

    上一个答案

    它发生在我将Android Studio升级到3.3.0之后。 apply plugin: 'io.fabric' 是原因。我已经向Firebase团队发送了关于这个问题的错误报告。

    应用程序模块的:

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

        3
  •  60
  •   Amer Alzibak    6 年前

    应用中build.gradle ,降级到gradle的稳定版本:

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

    它发生在我更新androidstudio到3.3,临时解决方案,直到他们修复它!

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

        4
  •  16
  •   113408 Dmitry    6 年前

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

    Crashlytics 的插件 io.fabric

    //apply plugin: 'io.fabric'
    

    然后,升级项目gradle文件上的fabric gradle依赖项将永久解决此问题:

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

    注意:这不会删除警告,但允许您在AS3.3中使用Crashlytics+

        5
  •  13
  •   Jude Fernandes    6 年前

    不确定实际问题是什么,但是从项目解决的问题中注释掉crashlytics相关的依赖项。

        6
  •  11
  •   Ryde    6 年前

    这是确认为错误的Crashlytics和他们正在努力。

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

    引自谷歌:


    大家好,

    谢谢你的耐心。

    看起来所有情况下的bug都来自crashlytics,我已经 向他们提交了一个窃听器。

    对我来说,我的调试应用程序在我的设备上运行良好,只需运行并忽略警告而不评论Crashlytics或Fabric。我没有试过生产。

    更新:

    他们建议按此链接进行Crashlytics更新:

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

    更新:

    我现在可以确认它在我的生产/发布版本应用程序上运行良好。我怎么知道它有用?因为它给了我一份车祸报告

    不管怎样,只要忽略警告,他们应该最终解决它。

    啊,刚刚读到它已经用fabric 1.28.0修复了:)

        7
  •  8
  •   Gastón Saillén Michael Lehenbauer    6 年前

    2019年1月24日最新消息

    enter image description here

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

    我们需要等到Crashlytics提出解决方案,GitHub问题已经解决

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

    io.fabric 插件正在降级我的gradle并升级我的fabric类路径(这在我的生产应用程序上工作)

     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
        }
    
        8
  •  4
  •   Agna JirKon Rx    6 年前

    如前所述,问题在于织物/Crashlytics。

    apply plugin: 'io.fabric'
    

    这是Crashlytics/Firebase端的一个bug,请检查以下链接并查看bug的状态: https://github.com/firebase/firebase-android-sdk/issues/198

        9
  •  3
  •   Martin Zeitler    6 年前

    问题跟踪器可能引用“延迟任务配置”-

    至少是这样 task configuration avoidance 建议。

    BaseVariantImpl variant.outputs.all 不会访问该方法(内部)-或者当检查可以阻止访问时;或者通过变体的名称访问变体时;或者以某种方式禁用变体的外部本机构建任务。另请参见 single-variant project sync

    build-tools 3.3.0-alpha12 3.3.0-beta1 release candidate 因此,投入大量的时间可能是毫无意义的-除了用它来提交另一个bug报告。

    新的快速反馈 quick feedback

        10
  •  3
  •   amit pandya Faisal Khan    6 年前

    对我来说,我遵循以下步骤: 1在项目级升级Gradle依赖build.gradle.

            classpath 'io.fabric.tools:gradle:1.28.0'
    
    1. 在下面添加此插件依赖项 应用插件:'com.android.application' 在应用程序级别build.gradle.

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

        11
  •  2
  •   Xavier Rubio Jansana    6 年前

    这是由于您的Android Studio从Android Studio 3.2.0升级到Android Studio 3.3.0。更新的Gradle依赖项(项目)IO.Fabric. 比如:

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

    并将您的Kotlin版本更新为

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

    这将解决这个问题。谢谢

        12
  •  1
  •   0xAliHn    6 年前

    构建日志打印如何对此进行调试,特别是您需要使用 -Pandroid.debug.obsoleteApi=true ,这将打印对不推荐使用的API的调用堆栈跟踪,并且您将能够确定哪个插件/代码调用它。

    如果它最终成为你的代码 read Lazy Task Configuration doc )

    如果它来自其他插件 向他们报告堆栈跟踪和警告消息,并可能提交修补程序。在这种情况下,它与 io.fabric 问题。

        13
  •  1
  •   Vladyslav Panchenko    6 年前

    Fabric gradle插件1.28.0的最新版本已经修复了这个问题,该插件于今天上线。 把这个放在你的顶层build.gradle:

    buildscript {
    // ... repositories, etc. ...
    
    dependencies {
        // ...other dependencies ...
        **classpath 'io.fabric.tools:gradle:1.28.0'**
    }
    
        14
  •  0
  •   pableiros Jatin Arora    6 年前

    当我打开这个项目时,我按下了按钮 Run migrations 按钮出现在右下角 Android Studio Crashlytics 附属国。

    enter image description here

        15
  •  0
  •   Petar    6 年前

    更改模块中的源代码兼容性 build.gradle 文件到java8修复了这个问题

    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
    

    确保在添加这些行之后重建项目

        16
  •  0
  •   Sadjad Abbasnia    6 年前

    这将修复错误:

        17
  •  0
  •   Fragment    6 年前

    就我而言,我需要 io.fabric 插件,解决方案是更新到最新的fabric tools gradle版本:

    classpath 'com.android.tools.build:gradle:3.3.0'
    classpath 'io.fabric.tools:gradle:1.27.0'
    
        18
  •  0
  •   Henrique Monte    6 年前

    对于那些需要继续应用Fabric插件的人,临时解决方案是在项目级别回到gradle的早期版本。

    将类路径版本更改为 com.android.tools.build:gradle:3.2.1 .

        19
  •  0
  •   Mohammad    6 年前

    这是最近的一个问题 gradle 3.3.2 )版本和 Fabric.io 插件。 现在新版本解决了这个问题 用户应该在他们的顶级 build.gradle

    buildscript {
       // ... repositories, etc. ...
    
        dependencies {
            // ...other dependencies ...
            classpath 'io.fabric.tools:gradle:1.28.0'
        }
    }
    
        20
  •  0
  •   Pavan    5 年前

    修复方法是将根版本gradle文件更新为最新版本。这个答案现在是正确的。在未来,gradle和androidsdk将再次实现新的变化。有时答案会随着时间的推移而变化。

    repositories {
        maven { url "https://jitpack.io" }
        maven {
            url 'https://maven.fabric.io/public'
        }
        google()
        jcenter()
    
    }
    dependencies {
    
        classpath 'com.android.tools.build:gradle:3.5.0'
        classpath 'com.google.gms:google-services:4.3.0'
        classpath 'io.fabric.tools:gradle:1.30.0'
    }
    
        21
  •  -7
  •   alacoo    6 年前

    是的

    和 当gradle升级到3.3.0时,它就会出现 经常发生是因为io.fabric 所以等到更新织物

    推荐文章