API & # 39; variant.getExternalNativeBuildTasks () & # 39;已过时,已被'variant所取代。

使用Android Studio 3.3 Canary 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'

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

73763 次浏览

问题跟踪器可能会提到“惰性任务配置”-

这至少是任务配置回避所建议的。

但是当variant.outputs.all不能(在内部)访问该方法时,或者当检查可以阻止访问时,可能会阻止对BaseVariantImpl这个过时方法的访问;或者当通过变量的名称访问变量时;或者以某种方式禁用变体的外部本机构建任务。也可以看到单变量项目同步选项,这似乎是相关的。

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

新的快速反馈quick feedback按钮看起来仍然是最有前途的。

不确定实际的问题是什么,但是从项目解决的问题中注释出崩溃分析相关的依赖项。

编辑

此问题已在织物1.28.0中修复。在项目级别的build.gradle中,添加以下行:

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

以前的回答

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

你有三个选择:

  • 等待下一个版本的Fabric插件发布。查看最新版本here

  • 降级为Android Studio 3.2.1

  • 注释掉io.fabric插件。

在应用程序模块的build.gradle中:

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

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

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

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

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


<强>编辑: 你不需要降级你的Android Studio

当我打开项目时,我按下了Android Studio右下角出现的Run migrations按钮。在没有注释掉Crashlytics依赖项的情况下,执行了迁移并解决了问题。

enter image description here

将模块build.gradle文件中的源代码兼容性更改为Java 8可以修复该问题

compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}

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

这个问题已经在今天发布的Fabric gradle插件的最新版本1.28.0中修复了。 在你的顶层build.gradle:

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


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

这将修复错误: 在任务栏上单击“Tools->Kotlin->”,在“Project

”中配置Kotlin

构建日志打印如何调试这个,特别是你需要用-Pandroid.debug.obsoleteApi=true运行Build,这将打印对弃用API调用的堆栈跟踪,你将能够找出哪个插件/代码调用了它。

如果它最终成为你的代码 -使用新的提供者API (阅读Lazy Task配置文档)

如果它来自其他插件 -向他们报告堆栈跟踪和警告消息,可能还会提交一个补丁。在这种情况下,它与io.fabric问题有关。

在我的情况下,我需要使用io.fabric插件,解决方案是,更新到最新的fabric工具gradle版本:

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

<强>更新 到今天为止,你可以使用classpath 'io.fabric.tools:gradle:1.28.0'来修复这个问题

如果注释掉应用程序gradle文件中Crashlytics的插件io.fabric暂时对你有用

//apply plugin: 'io.fabric'

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

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

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

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

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

这是Crashlytics的bug,他们正在努力解决。

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

引自谷歌受让人:

je...@google.com #23一月23日,2019 01:40AM
嗨,< / p >

谢谢你的耐心等待。

看起来所有情况下的bug都来自于crashlytics,我已经

.

.

有进展我会及时通知你。

对我来说,我的调试应用在我的设备上运行得很好,忽略警告,不评论Crashlytics或Fabric。我还没有尝试生产。

更新:

谷歌问题跟踪器已经将此问题标记为不会修复(不可行),因为所有问题都来自Crashlytics,并让Crashlytics团队修复(尽管他们是同一个谷歌人…)

他们建议按照这个链接获取Crashlytics的更新:

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

注意:我仍然在使用ios .fabric.tools:gradle:1.26.0的Android Studio 3.3,没有评论任何Craslytics,它在我的调试应用程序上工作得很好。

更新:

我现在可以确认它在我的生产/发布版本应用程序上工作良好。我如何知道它工作呢?因为它给我发了一份坠机报告——_——”

不管怎样,忽略这个警告,他们最终会解决的。

哇,刚读到它已经修复了面料1.28.0:)

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
}

如前所述,问题出在Fabric/Crashlytics上。

apply plugin: 'io.fabric'

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

首先,它不是错误

这是警告

< p >和 它显示时更新gradle到3.3.0 经常发生是因为io。面料所以等到面料更新 当前仍然显示警告的版本是'io.fabric.tools:gradle:1.27.1'

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

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

并更新您的Kotlin版本

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

这将解决这个问题。谢谢

这是一个问题与最新的gradle(在我的情况下3.3.2)版本和Fabric.io插件。 现在新版本解决了这个问题 用户应该在顶层build.gradle中有这个:

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


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

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

请用1.30.0更新你的两个gradle fabric工具

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

对我来说,我遵循这些步骤: 1. 升级Gradle依赖于项目级别build.gradle.

        classpath 'io.fabric.tools:gradle:1.28.0'
  1. add this plugin dependency below apply plugin: 'com.android.application' 在应用程序级别build.gradle.

        apply plugin: 'io.fabric'
    
  2. Sync the project with gradle files.

修复是更新根构建gradle文件到最新。这个答案现在仍然成立。在未来再次新的变化将由gradle和android SDK实现。有时答案会随着时间的推移而变化。

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'
}