问答中心分类: FIREBASEAPI 'variant.getExternalNativeBuildTasks()' 已过时并已替换为 'variant.getExternalNativeBuildProviders()
0
匿名用户 提问 6分钟 前

使用带有 gradle 插件版本的 Android Studio 3.3 Canary 113.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'
}

应用程序构建.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'

我在 app/build.gradle 文件中跳过了一些常量和其他敏感信息。

Skizo-ozᴉʞS 回复 6分钟 前

你可以发布你的 build.gradle(app) 吗?

Skizo-ozᴉʞS 回复 6分钟 前

@Skizo-ozᴉʞS 添加项目 build.gradle 文件

Skizo-ozᴉʞS 回复 6分钟 前

@alashow 这与不同的问题有关,消息是“API ‘variant.getJavaCompile()’ is obsolete..”

Skizo-ozᴉʞS 回复 6分钟 前

稳定版也存在问题

Skizo-ozᴉʞS 回复 6分钟 前

也存在将fabric gradle插件更新到最新版本(1.27.0)

Skizo-ozᴉʞS 回复 6分钟 前

@JudeFernandes 你知道警告和错误之间有区别吗?

Skizo-ozᴉʞS 回复 6分钟 前

您现在可以使用classpath 'io.fabric.tools:gradle:1.28.0'

Skizo-ozᴉʞS 回复 6分钟 前

问题已在最新版本中修复。检查评论。stackoverflow.com/a/55193824/3806413

Skizo-ozᴉʞS 回复 6分钟 前

我仍然收到此警告classpath 'io.fabric.tools:gradle:1.31.0'implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'

Skizo-ozᴉʞS 回复 6分钟 前

Fabric 已于 2020 年 3 月 31 日弃用,其开发已完全转移到 Firebase Crashlytics

19 Answers
0
Anggrayudi H 回答 6分钟 前

编辑
此问题已在面料 1.28.0.在你的build.gradle在项目级别,添加以下行:

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

上一个答案
它发生在我将 Android Studio 更新到 3.3.0 之后。apply plugin: 'io.fabric'是原因。我已向 Firebase 团队发送了一份关于此问题的错误报告。
您有 3 个选项:

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

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

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

Gillis Haasnoot 回复 6分钟 前

是的,这里有同样的错误。无法构建项目。恢复到 3.2

yuval 回复 6分钟 前

您是否可以链接到您使用 Firebase 打开的错误报告或问题?我很想赞成它。

Anggrayudi H 回复 6分钟 前

抱歉@yuval,我不能放链接。 Firebase 不提供像 Google 问题跟踪器那样的公共错误跟踪。他们只通过电子邮件进行。

Darshan Miskin 回复 6分钟 前

执行此操作后应用程序在运行时崩溃。

0xAliHn 回复 6分钟 前

我必须使用io.fabric插件那么我怎样才能在不改变这个的情况下删除这个警告呢?

Infinite Loops 回复 6分钟 前

并且还要禁用 Crashlytics 的依赖。

Daniel Wilson 回复 6分钟 前

这是原因,不是可行的解决方案

Asif Sb 回复 6分钟 前

我现在不能使用 Crashlytics。

support_ms 回复 6分钟 前

他们说您可以在 2019 年年底之前使用它。现在我正在使用,我们将看看会发生什么)

113408 回复 6分钟 前

@DarshanMiskin 这是正常的,要么完全删除 crashlytics,要么暂时保留警告。如果您的应用程序根本没有构建,您可以查看下面的评论以获取解决方案

Jamal S 回复 6分钟 前

这肯定是原因,迁移到 Firebase crashlytics 不会解决这个问题,因为 Fabric 正在将其功能集成到 Firebase,我正在遵循本指南:proandroiddev.com/…

user25 回复 6分钟 前

为什么要降级?没道理!这只是一个警告,它还没有被删除,它可以构建你的项目(整个 2019 年……)。我相信他们会在今年修复它

Samuel Owino 回复 6分钟 前

我同意只是警告降级似乎太极端了。如果它是一个平台更改,(谷歌)很可能会明确说明,例如我们应该从结构转移到 firebase crashlystics 类型配置

Tamoxin 回复 6分钟 前

目前最好的办法就是接受警告。也许他们会在不久的将来修复它

Kimi Chiu 回复 6分钟 前

io.fabric.tools:gradle:1.27.1仍然有这个问题。

Vishal Patoliya ツ 回复 6分钟 前

删除此内容后出现 .this 错误。缺少 Crashlytics 构建 ID。当您的应用的构建配置中缺少 Crashlytics 工具时,会发生这种情况

0
Amer Alzibak 回答 6分钟 前

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

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

它发生在我将 Android Studio 更新到 3.3 之后,这是一个临时解决方案,直到他们修复它。

编辑:您无需降级 Android Studio

Rubén Viguera 回复 6分钟 前

然后你还必须降级到 Android Studio 3.2.1。不管怎么说,还是要谢谢你

Rabie Jradi 回复 6分钟 前

将 Android Studio (AS) 升级到 3.3 版后,我遇到了同样的问题。通过将 Gradle 降级到 4.6 版和将 Android Gradle 插件降级到 3.2.1 版,我让 Gradle 同步再次工作,这是我在 AS 更新之前使用的版本。查表这里如果您怀疑如何修改 gradle 和插件的版本。

Sid 回复 6分钟 前

它可以在没有降级任何东西的情况下工作,感谢您的建议

Amer Alzibak 回复 6分钟 前

你不需要降级你的android工作室@RubénViguera

Danish Ansari 回复 6分钟 前

除了答案中提到的 gradle 版本之外,您不需要降级任何东西。这应该是公认的答案。

0
113408 回答 6分钟 前

更新从今天开始,您可以使用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+ 一起使用

113408 回复 6分钟 前

@RJB 您在使用 Crashlytics 吗?如果你从你的项目中删除它,它会起作用吗?如果是,那么这应该可以解决问题。但是您可能仍会收到警告,但该项目将编译并且您可以安全地生成您的 apk

RJB 回复 6分钟 前

是的。我的意思是我仍然收到警告。

113408 回复 6分钟 前

操作人员和其他人(包括我)遇到了这个问题,无法编译项目crashlytics启用。因此,要保留 Crashlytics 并继续推动 prod,您可以使用上述更新,即使它仍会触发“警告”。

0
Jude Fernandes 回答 6分钟 前

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

0
Ryde 回答 6分钟 前

它已被确认为 Crashlytics 的错误,他们正在努力解决。
https://issuetracker.google.com/issues/116408637
引自谷歌受让人:

是…@google.com #23 2019 年 1 月 23 日上午 1:40
大家好,
感谢您的耐心等待。
看起来所有情况下的错误都来自崩溃分析,我已经向他们提交了错误。
我会及时通知您最新状态。

对我来说,我的调试应用程序在我的设备上运行良好,只需运行并忽略警告而不评论 Crashlytics 或 Fabric。我还没有尝试生产。
更新:
Google 问题跟踪器已将此问题标记为无法修复(不可行),因为所有问题都来自 Crashlytics,并让 Crashlytics 团队完成修复(尽管他们是同一个 Google 员工……)。
他们建议点击此链接获取 Crashlytics 更新:
https://github.com/firebase/firebase-android-sdk/issues/198
注意:我仍在使用带有 io.fabric.tools:gradle:1.26.0 的 Android Studio 3.3,而没有评论任何 Craslytics,它在我的调试应用程序上运行良好。
更新:
我现在可以确认它在我的生产/发布版本应用程序上运行良好。我怎么知道它有效?因为它给我发回了崩溃报告-_-‘
无论如何,只需忽略警告,他们最终应该修复它。
哇,刚刚读到它已经用织物 1.28.0 修复了 🙂