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'
}
app 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文件中跳过了一些常量和其他敏感信息。
#1 楼
此问题已在其最新版本'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
评论
确保在项目级别和应用程序的build.gradle中进行更改。
– RJB
19年3月16日在18:51
版本1.28.0解决了我的问题,当前版本为1.29.0 docs.fabric.io/android/changelog.html#fabric-gradle-plugin
–亚历山大·哈特曼
19年5月22日在10:26
这是ChangeLog:docs.fabric.io/android/changelog.html#march-15-2019
–DSchmidt
19年7月8日在18:47
我仍然通过类路径'io.fabric.tools:gradle:1.31.0'和实现'com.crashlytics.sdk.android:crashlytics:2.10.1'收到此警告。它要么再次被破坏,要么在所有情况下都不是固定的。
–基因S
19年8月2日在6:41
您是从哪里获得此Fabric Tools Gradle版本的?我只能找到1.25.4 mvnrepository.com/artifact/io.fabric.tools/gradle
–拉克兰·扬(Lachlan Young)
19-11-25在23:39
#2 楼
编辑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插件版本发布。在此处查看最新版本。
降级到Android Studio 3.2.1。
注释掉
io.fabric
插件。在应用程序模块的
build.gradle
中:apply plugin: 'com.android.application'
// apply plugin: 'io.fabric' <== this plugin causes the error
但是,即使出现此错误,您仍然可以构建和运行项目。不用理会。
评论
您是否可以链接到Bug报告或使用Firebase打开的问题?我很乐意投票。
– yuval
19年1月15日在0:00
我必须使用io.fabric插件,然后如何在不更改此警告的情况下删除此警告?
– 0xAliHn
19年1月16日在13:57
这是原因,而不是可行的解决方案
–丹尼尔·威尔逊(Daniel Wilson)
19年1月17日在8:45
他们说您可以在2019年年底之前使用它。目前,我正在使用,我们将看到发生了什么
– Shuhrat Akramov
19年1月21日在1:29
为什么要降级?没道理!这只是一个警告,尚未删除,它可以构建您的项目(整个2019年...)。我相信他们会在今年内修复它
–user25
19年1月25日在10:33
#3 楼
在应用程序build.gradle中,降级到gradle的此稳定版本:classpath 'com.android.tools.build:gradle:3.2.1'
在我将Android Studio更新为3.3临时解决方案之后,直到他们将其修复后,它才会发生!
编辑:您不需要降级android studio!
评论
然后,您还必须降级到Android Studio 3.2.1。不管怎么说,还是要谢谢你
–鲁本·维格拉(RubénViguera)
19年1月15日,11:15
将Android Studio(AS)升级到版本3.3之后,我遇到了同样的问题。我通过将Gradle降级为4.6版并将Android Gradle插件降级为3.2.1版(这是我在AS更新之前使用的版本)来使Gradle同步再次工作。如果您不确定如何修改gradle和插件的版本,请在此处查找表格。
– Rabie Jradi
19年1月15日在12:57
它的工作没有降级任何感谢您的建议
–Sid
19年1月15日在19:28
您不需要降级android studio @RubénViguera
–阿米尔·阿尔齐巴克(Amer AlZibak)
19年1月23日在21:02
除了答案中提到的gradle版本,您不需要降级任何其他版本。这应该是公认的答案。
–丹麦Ansari
19-2-23在7:14
#4 楼
UPDATE到今天为止,您可以使用
classpath 'io.fabric.tools:gradle:1.28.0'
来解决此问题!如果在应用程序gradle文件上注释掉
Crashlytics
的插件io.fabric
暂时为您服务//apply plugin: 'io.fabric'
然后升级您的结构gradle对Project gradle文件的依赖关系将永久解决此问题:
classpath 'io.fabric.tools:gradle:1.27.0'
NB:这不会删除警告,但允许您将Crashlytics与AS3.3 +一起使用
评论
@RJB您在使用Crashlytics吗?如果将其从项目中删除,它将起作用吗?如果是,那么应该可以解决该问题。但是,您仍然可能会收到警告,但是项目将编译,并且可以安全地生成apk
– 113408
19年1月18日在7:50
是。我的意思是我仍然收到警告。
– RJB
19年1月18日在7:55
op和其他人(包括我)存在此问题,并且无法在启用了crashlytics的情况下编译项目。因此,要保留Crashlytics并继续推送至产品,即使它仍会触发“警告”,您也可以使用上述更新。
– 113408
19年1月18日在15:20
#5 楼
不确定实际问题是什么,但从项目已解决的问题中注释掉与crashlytics相关的依赖项。#6 楼
它已被确认为Crashlytics的错误,正在研究中。https://issuetracker.google.com/issues/116408637
引自Google受让人:
je ... @ google.com#23 Jan 23,2019 01:40 AM
大家好,
感谢您的耐心配合。
似乎所有情况下的错误都来自crashlytics,我已经
向他们提交了错误。
我将向您通报最新状态。
/>
对我来说,调试应用程序可以在设备上正常运行,只需运行并忽略警告而不评论Crashlytics或Fabric。我尚未尝试进行生产。
更新:
Google Issue Tracker已将此问题标记为“无法解决(不可行)”,因为所有问题均来自Crashlytics,由Crashlytics小组完成的修复(尽管他们是同一位Googler ...)。
他们建议按照以下链接进行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 :)
#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
}
评论
我们如何在proguard-rules.pro中添加-dontwarn com.crashlytics.android.Crashlytics
–穆斯塔西尔
19年2月9日在8:28
如果通过执行以下操作删除警告,则问题仍然存在,最终将需要再次解决问题
–加斯顿·塞伦(GastónSaillén)
19年2月9日在15:59
对!这是用于编译内部版本的临时解决方案,但是它比降级所有版本要好得多。
–穆斯塔西尔
19-2-10在4:37
是的,将其降级将起作用,如果您消除了警告,则可以保留更新的版本,但是它将不起作用
–加斯顿·塞伦(GastónSaillén)
19年2月10日在7:31
@Mustansir,我认为这是与gradle相关的问题,与Proguard无关。
–WindRider
19年3月9日在16:18
#8 楼
据说,问题出在Fabric / Crashlytics。apply plugin: 'io.fabric'
这是Crashlytics / Firebase方面的错误,请检查以下链接并查看错误状态:https://github.com/firebase/firebase-android-sdk/issues/198
#9 楼
问题跟踪程序可能会引用“惰性任务配置”-,这至少是避免任务配置所建议的内容。
,但是可能会阻止访问这种过时的方法
BaseVariantImpl
,当variant.outputs.all
不能(内部)访问该方法时-或当检查可以阻止该方法时;或通过名称访问变体时;或以某种方式禁用该变体的外部本机构建任务。另请参阅单变量项目同步选项,该选项似乎很相关。 或等待构建工具
3.3.0-alpha12
或3.3.0-beta1
...甚至还不是release candidate
,因此,投入大量时间可能毫无意义-除了使用它来提交另一个错误报告。新的快速反馈按钮看起来仍然是最有前途的。
评论
是的,我同意,以前的构建工具中没有这种类型的错误。下一个RC可能会修复它
– d4c0d312
18-10-25在23:42
在发行版中未修复
–胡安·迪亚兹(Juan Diaz)
19年1月15日在4:35
developer.android.com/studio/releases/gradle-plugin#3-3-0 ...添加android.debug.obsoleteApi = true以查看其来源。重命名了一些方法,并在其名称后附加了Provider。
–马丁·齐特勒
19年1月15日在18:25
项目gradle.properties中的@SergeyNarozhnyy
–sigitbn
19年1月17日在22:27
@SergeyNarozhnyy 3.3.0版本破坏了几件事,因为变体API发生了变化。可以链接最近的一个讨论:stackoverflow.com/questions/54206898/…(在此处添加了摘要作为答案)。
–马丁·齐特勒
19年1月18日,0:29
#10 楼
对我来说,我遵循了以下步骤:1。在项目级别build.gradle上升级Gradle依赖项。
classpath 'io.fabric.tools:gradle:1.28.0'
在应用插件下面添加此插件依赖项:'com.android.application '
在应用程序级别build.gradle中。
apply plugin: 'io.fabric'
用gradle文件同步项目。
#11 楼
发生这种情况是由于您的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"
这将解决此问题。谢谢
评论
谢谢。你的回答帮助了我。
–AndréLuiz Reis
19年2月14日在22:31
@Sean如果您正在使用Kotlin和io febric.then可以用于降级您的类路径版本。它将起作用...
–拉胡尔·库什瓦哈(Rahul Kushwaha)
19年2月27日在5:34
Crashlytics内部版本ID丢失。当应用的构建配置中缺少Crashlytics工具时,就会发生这种情况
– Vishal Patoliyaツ
19年3月12日在10:14
#12 楼
构建日志将打印出如何调试的方法,特别是您需要使用-Pandroid.debug.obsoleteApi=true
运行构建,它将打印对已弃用API的调用的堆栈跟踪,并且您将能够弄清楚哪个插件/代码对其进行了调用。如果最终成为您的代码,请使用新的提供程序API(请参阅Lazy Task Configuration文档)。
如果它来自其他插件,请向其报告堆栈跟踪和警告消息,并提交补丁。在这种情况下,它与
io.fabric
问题有关。#13 楼
这个问题已在最新发布的Fabric gradle插件1.28.0中得到修复,该插件已于今天发布。将其放在顶层build.gradle中:
buildscript {
// ... repositories, etc. ...
dependencies {
// ...other dependencies ...
**classpath 'io.fabric.tools:gradle:1.28.0'**
}
#14 楼
打开项目时,我按了Run migrations
右下角的Android Studio
按钮。执行迁移并解决了问题,而没有注释Crashlytics
依赖项。#15 楼
将模块build.gradle
文件中的源兼容性更改为Java 8可解决此问题compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
请确保在添加这些行后重新构建项目
评论
在顶级build.gradle或模块级别(/ app)中?
–喵喵猫2012
19年2月22日在6:09
模块级别(应用)
– jesses.co.tt
19年9月3日在18:38
#16 楼
这将解决错误:在任务栏上,单击“工具”->“ Kotlin”->“在项目中配置Kotlin”
#17 楼
就我而言,我需要使用io.fabric
插件,解决方案是将其更新到最新的fabric工具gradle版本:classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'io.fabric.tools:gradle:1.27.0'
#18 楼
对于需要保持使用Fabric插件的用户,临时的解决方案是在项目级别返回gradle的先前版本。将类路径版本更改为
com.android.tools.build:gradle:3.2.1
。#19 楼
最新的gradle
(在我的情况下为3.3.2
)版本和Fabric.io
插件存在问题。现在已由新版本解决。
用户应该在顶级
build.gradle
中使用它:buildscript {
// ... repositories, etc. ...
dependencies {
// ...other dependencies ...
classpath 'io.fabric.tools:gradle:1.28.0'
}
}
#20 楼
解决方法是将根目录构建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'
}
#21 楼
首先这不是错误是警告
,并且
当更新gradle到3.3.0时会显示它。
通常是因为io而发生。织物,所以请等到仍然显示警告的更新织物
当前版本是'io.fabric.tools:gradle:1.27.1'
评论
可以发布build.gradle(app)吗?@Skizo-ozᴉʞS添加了项目build.gradle文件
issuetracker.google.com/issues/116148147
@alashow这与不同的问题有关,消息为“ API'variant.getJavaCompile()'已过时。.“
稳定版本也存在问题