API 'variant.getExternalNativeBuildTasks()' 已过时并已替换为 'variant.getExternalNativeBuildProviders()
API 'variant.getExternalNativeBuildTasks()' is obsolete and has been replaced with 'variant.getExternalNativeBuildProviders()
使用 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 文件中跳过了一些常量和其他敏感信息。
问题跟踪器可能指的是 "lazy task configuration" -
至少 task configuration avoidance 是这么建议的。
但是当 variant.outputs.all
不会(内部)访问该方法时,或者当检查可以阻止访问时,可以阻止对 BaseVariantImpl
的这一过时方法的访问;或者在通过名称访问变体时;或者以某种方式禁用变体的外部本机构建任务。另请参阅 single-variant project sync 选项,这似乎是相关的。
或等待 build-tools 3.3.0-alpha12
或 3.3.0-beta1
...这甚至不是 release candidate
,因此投入大量时间可能毫无意义 - 除了使用它提交另一个错误报告。
新的快速反馈 按钮看起来还是最有前途的。
不确定实际问题是什么,但从项目解决的问题中注释掉与 crashlytics 相关的依赖项。
编辑
此问题已在 Fabric 1.28.0 中修复。在您的 build.gradle
项目级别中,添加以下行:
classpath 'io.fabric.tools:gradle:1.28.1'
上一个答案
它发生在我将 Android Studio 更新到 3.3.0 之后。 apply plugin: 'io.fabric'
是原因。我已将有关此问题的错误报告发送给 Firebase 团队。
您有 3 个选项:
等下个版本的Fabric插件发布吧。查看最新版本here.
注释掉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
依赖项的情况下解决了问题。
将模块 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->Configure Kotlin in Project
构建日志打印如何调试它,特别是你需要 运行 使用 -Pandroid.debug.obsoleteApi=true
构建,这将打印调用已弃用 API 的堆栈跟踪,你将能够弄清楚哪个 plugin/code 调用它。
如果它最终成为您的代码 — 使用新的 Provider API (read Lazy Task Configuration doc)
如果它来自其他插件 — 向他们报告堆栈跟踪和警告消息,并可能提交补丁。在这种情况下,它与 io.fabric
问题有关。
在我的例子中,我需要使用 io.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'
然后升级您的结构 gradle 项目 gradle 文件的依赖项将永久解决问题:
classpath 'io.fabric.tools:gradle:1.27.0'
注意:这不会删除警告,但可以让您将 Crashlytics 与 AS3.3+ 一起使用
对于那些需要保持应用Fabric插件的人,临时解决方案是在项目级别回到gradle以前的版本。
将类路径版本更改为 com.android.tools.build:gradle:3.2.1
。
它已被确认为 Crashlytics 的错误,他们正在处理它。
https://issuetracker.google.com/issues/116408637
引自Google受让人:
je...@google.com #23 Jan 23, 2019 01:40AM
Hi all,
Thank you for your patience.
It looks like the bug in all cases is coming from crashlytics and I've
filed a bug with them.
I will keep you updated on the status.
对我来说,我的调试应用程序在我的设备上运行良好,只需 运行 并忽略警告而不评论 Crashlytics 或 Fabric。我还没有尝试生产。
更新:
Google Issue Tracker 已将此问题标记为 Won't Fix (Infeasible),因为所有问题都来自 Crashlytics,并让 Crashlytics 团队完成修复(尽管它们是相同的 Googler ...).
他们建议按照此 link 进行 Crashlytics 更新:
https://github.com/firebase/firebase-android-sdk/issues/198
注意:我仍在使用 Android Studio 3.3 和 io.fabric.tools:gradle:1.26.0,没有评论任何 Craslytics,它在我的调试应用程序上运行良好。
更新:
我现在可以确认它在我的 production/release 版本应用程序上运行良好。我怎么知道它有效?因为它给我发回了一份崩溃报告 -_-'
无论如何,请忽略警告,他们最终应该会修复它。
噢,刚读到它已经用 fabric 1.28.0 修复了:)
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
}
如前所述,问题出在Fabric/Crashlytics。
apply plugin: 'io.fabric'
这是 Crashlytics/Firebase 方面的错误,请检查以下 link 并查看错误的状态:https://github.com/firebase/firebase-android-sdk/issues/198
首先这不是错误
警告
和
它在更新 gradle 到 3.3.0 时出现
经常出现因为io.fabric所以等到update fabric
仍然显示警告的当前版本是 '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 结构工具
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'
在下面添加此插件依赖项应用插件:'com.android.application'
在应用级别 build.gradle.
apply plugin: 'io.fabric'
将项目与 gradle 个文件同步。
修复是将根构建 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'
}
使用 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 文件中跳过了一些常量和其他敏感信息。
问题跟踪器可能指的是 "lazy task configuration" -
至少 task configuration avoidance 是这么建议的。
但是当 variant.outputs.all
不会(内部)访问该方法时,或者当检查可以阻止访问时,可以阻止对 BaseVariantImpl
的这一过时方法的访问;或者在通过名称访问变体时;或者以某种方式禁用变体的外部本机构建任务。另请参阅 single-variant project sync 选项,这似乎是相关的。
或等待 build-tools 3.3.0-alpha12
或 3.3.0-beta1
...这甚至不是 release candidate
,因此投入大量时间可能毫无意义 - 除了使用它提交另一个错误报告。
新的快速反馈
不确定实际问题是什么,但从项目解决的问题中注释掉与 crashlytics 相关的依赖项。
编辑
此问题已在 Fabric 1.28.0 中修复。在您的 build.gradle
项目级别中,添加以下行:
classpath 'io.fabric.tools:gradle:1.28.1'
上一个答案
它发生在我将 Android Studio 更新到 3.3.0 之后。 apply plugin: 'io.fabric'
是原因。我已将有关此问题的错误报告发送给 Firebase 团队。
您有 3 个选项:
等下个版本的Fabric插件发布吧。查看最新版本here.
注释掉
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
依赖项的情况下解决了问题。
将模块 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->Configure Kotlin in Project
构建日志打印如何调试它,特别是你需要 运行 使用 -Pandroid.debug.obsoleteApi=true
构建,这将打印调用已弃用 API 的堆栈跟踪,你将能够弄清楚哪个 plugin/code 调用它。
如果它最终成为您的代码 — 使用新的 Provider API (read Lazy Task Configuration doc)
如果它来自其他插件 — 向他们报告堆栈跟踪和警告消息,并可能提交补丁。在这种情况下,它与 io.fabric
问题有关。
在我的例子中,我需要使用 io.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'
然后升级您的结构 gradle 项目 gradle 文件的依赖项将永久解决问题:
classpath 'io.fabric.tools:gradle:1.27.0'
注意:这不会删除警告,但可以让您将 Crashlytics 与 AS3.3+ 一起使用
对于那些需要保持应用Fabric插件的人,临时解决方案是在项目级别回到gradle以前的版本。
将类路径版本更改为 com.android.tools.build:gradle:3.2.1
。
它已被确认为 Crashlytics 的错误,他们正在处理它。
https://issuetracker.google.com/issues/116408637
引自Google受让人:
je...@google.com #23 Jan 23, 2019 01:40AM
Hi all,Thank you for your patience.
It looks like the bug in all cases is coming from crashlytics and I've filed a bug with them.
I will keep you updated on the status.
对我来说,我的调试应用程序在我的设备上运行良好,只需 运行 并忽略警告而不评论 Crashlytics 或 Fabric。我还没有尝试生产。
更新:
Google Issue Tracker 已将此问题标记为 Won't Fix (Infeasible),因为所有问题都来自 Crashlytics,并让 Crashlytics 团队完成修复(尽管它们是相同的 Googler ...).
他们建议按照此 link 进行 Crashlytics 更新:
https://github.com/firebase/firebase-android-sdk/issues/198
注意:我仍在使用 Android Studio 3.3 和 io.fabric.tools:gradle:1.26.0,没有评论任何 Craslytics,它在我的调试应用程序上运行良好。
更新:
我现在可以确认它在我的 production/release 版本应用程序上运行良好。我怎么知道它有效?因为它给我发回了一份崩溃报告 -_-'
无论如何,请忽略警告,他们最终应该会修复它。
噢,刚读到它已经用 fabric 1.28.0 修复了:)
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
}
如前所述,问题出在Fabric/Crashlytics。
apply plugin: 'io.fabric'
这是 Crashlytics/Firebase 方面的错误,请检查以下 link 并查看错误的状态:https://github.com/firebase/firebase-android-sdk/issues/198
首先这不是错误
警告
和 它在更新 gradle 到 3.3.0 时出现 经常出现因为io.fabric所以等到update fabric 仍然显示警告的当前版本是 '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 结构工具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'
在下面添加此插件依赖项应用插件:'com.android.application' 在应用级别 build.gradle.
apply plugin: 'io.fabric'
将项目与 gradle 个文件同步。
修复是将根构建 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'
}