Verwenden von Android Studio 3.3 Canary 11 mit der Gradle-Plugin-Version 3.3.0-alpha11
. Beim Versuch, Gradle zu synchronisieren, wird der folgende Fehler ausgegeben
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
Durch Klicken auf den Fehler komme ich zu dieser Zeile in der Gradle-Datei
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
Was genau muss ich hier ändern?
Projekt 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'
Ich habe einige Konstanten und andere vertrauliche Informationen in der Datei app / build.gradle übersprungen.
android
firebase
android-studio
android-gradle-plugin
fabric.io
Jude Fernandes
quelle
quelle
Antworten:
Das Problem wurde in der neuesten Version behoben
'io.fabric.tools:gradle:1.30.0'
Bitte aktualisieren Sie Ihre beiden Gradle-Stoffwerkzeuge mit 1.30.0
Weitere Informationen finden Sie unter https://github.com/firebase/firebase-android-sdk/issues/198#issuecomment-473435453
quelle
classpath 'io.fabric.tools:gradle:1.31.0'
undimplementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
. Es ist entweder wieder kaputt oder nicht in allen Fällen behoben.BEARBEITEN
Dieses Problem wurde in Fabric 1.28.0 behoben . Fügen Sie in Ihrer
build.gradle
Projektebene die folgende Zeile hinzu:Vorherige Antwort
Dies geschieht, nachdem ich Android Studio auf 3.3.0 aktualisiert habe.
apply plugin: 'io.fabric'
ist die Ursache. Ich habe dem Firebase-Team einen Fehlerbericht zu diesem Problem gesendet.Sie haben 3 Möglichkeiten:
Warten Sie, bis die nächste Version des Fabric-Plugins veröffentlicht ist. Schauen Sie sich die neueste Version hier .
Downgrade auf Android Studio 3.2.1 .
Kommentieren Sie
io.fabric
Plugin.In
build.gradle
Ihrem App-Modul:Sie können Ihre Projekte jedoch weiterhin erstellen und ausführen, obwohl dieser Fehler auftritt. Ignoriere es einfach.
quelle
io.fabric
Plugin verwenden. Wie kann ich diese Warnung entfernen, ohne dies zu ändern?Downgrade in application build.gradle auf diese stabile Version von gradle:
Es passiert, nachdem ich Android Studio auf 3.3, temporäre Lösung aktualisiert habe, bis sie es beheben!
edit: du musst dein android studio nicht downgraden!
quelle
UPDATE Ab heute können Sie
classpath 'io.fabric.tools:gradle:1.28.0'
dieses Problem beheben!Wenn das Auskommentieren des
Crashlytics
Pluginsio.fabric
in der App-Gradle-Datei vorübergehend für Sie funktioniert hatDurch das Aktualisieren Ihrer Fabric-Gradle-Abhängigkeiten von der Project-Gradle-Datei wird das Problem dauerhaft behoben:
NB: Dadurch werden die Warnungen nicht entfernt, aber Sie können Crashlytics mit AS3.3 + verwenden
quelle
crashlytics
aktiviert kompilieren . Um Crashlytics beizubehalten und trotzdem auf Prod zu drängen, können Sie das oben erwähnte Update verwenden, obwohl es immer noch "Warnungen" auslöst.Ich bin mir nicht sicher, was das eigentliche Problem ist, aber ich kommentiere die Crashlytics-bezogenen Abhängigkeiten von dem vom Projekt gelösten Problem aus.
quelle
Es wurde als Fehler für Crashlytics bestätigt und sie arbeiten daran.
https://issuetracker.google.com/issues/116408637
Zitiert vom Google-Beauftragten:
Für mich funktioniert meine Debug-App auf meinem Gerät einwandfrei, indem die Warnung ausgeführt und ignoriert wird, ohne Crashlytics oder Fabric zu kommentieren. Ich habe nicht versucht für die Produktion.
Aktualisieren:
Google Issue Tracker hat dieses Problem als nicht behoben (nicht realisierbar) markiert, da alle Probleme von Crashlytics stammten, und das Crashlytics-Team Korrekturen vornehmen lassen (obwohl es sich um denselben Googler handelt ...).
Sie schlagen vor, diesem Link für Crashlytics-Updates zu folgen:
https://github.com/firebase/firebase-android-sdk/issues/198
Hinweis: Ich verwende immer noch Android Studio 3.3 mit io.fabric.tools:gradle:1.26.0, ohne Craslytics zu kommentieren, und es funktioniert einwandfrei in meiner Debug-App.
Aktualisieren:
Ich kann jetzt bestätigen, dass es in meiner Produktions- / Release-Versions-App einwandfrei funktioniert. Woher weiß ich, dass es funktioniert? Weil es mir einen Absturz zurückgeschickt hatte -_- '
Wie auch immer, ignorieren Sie einfach die Warnung, sie sollten sie irgendwann beheben.
Aww, lies einfach, dass es mit Fabric 1.28.0 behoben wurde :)
quelle
Neueste Nachrichten vom 24.01.2019
Infos hier https://issuetracker.google.com/issues/116408637
Wir müssen warten, bis Crashlytics eine Lösung gefunden hat. Hier ist das GitHub-Problem geöffnet
https://github.com/firebase/firebase-android-sdk/issues/198
Die einzige Möglichkeit, die ich derzeit verwende, um das io.fabric- Plugin nicht zu kommentieren, besteht darin, meinen Gradle herunterzustufen und meinen Fabric-Klassenpfad zu aktualisieren (dies funktioniert in meiner Produktions-App).
quelle
-dontwarn com.crashlytics.android.Crashlytics
inproguard-rules.pro
Wie gesagt, das Problem liegt bei Fabric / Crashlytics.
Es handelt sich um einen Fehler auf der Crashlytics / Firebase-Seite. Überprüfen Sie den folgenden Link und den Status des Fehlers: https://github.com/firebase/firebase-android-sdk/issues/198
quelle
Der Issue-Tracker verweist möglicherweise auf "Lazy Task-Konfiguration" -
Das schlägt zumindest die Vermeidung von Aufgabenkonfigurationen vor.
aber man kann möglicherweise den Zugriff auf diese veraltete Methode verhindern
BaseVariantImpl
, wennvariant.outputs.all
nicht (intern) auf diese Methode zugegriffen wird - oder wenn Überprüfungen den Zugriff verhindern können; oder beim Zugriff auf die Variante über ihren Namen; oder deaktivieren Sie irgendwie die externen nativen Build-Tasks für die Variante. Siehe auch die Einzelvarianten-Projektsynchronisierungsoption , die eher verwandt zu sein scheint.oder warten Sie auf Build-Tools
3.3.0-alpha12
oder3.3.0-beta1
... dies ist nicht einmal einerelease candidate
, daher ist es möglicherweise sinnlos, zu viel Zeit zu investieren - es sei denn, Sie verwenden es, um einen weiteren Fehlerbericht einzureichen.Der neue Schnellfeedback- Button sieht immer noch am vielversprechendsten aus.
quelle
android.debug.obsoleteApi=true
, um zu sehen, woher es kommt. Es wurden einige Methoden umbenannt undProvider
an ihren Namen angehängt.3.3.0
Veröffentlichung hat ein paar Dinge kaputt gemacht, da sich die Varianten-API geändert hatte. kann eine aktuelle Diskussion verlinken : stackoverflow.com/questions/54206898/… (eine Zusammenfassung als Antwort hinzugefügt).Für mich habe ich die folgenden Schritte ausgeführt: 1. Aktualisieren Sie die Gradle-Abhängigkeit von build.gradle auf Projektebene.
Fügen Sie diese Plugin-Abhängigkeit unten hinzu. Wenden Sie das Plugin 'com.android.application' in der build.gradle auf App-Ebene an.
Synchronisieren Sie das Projekt mit Gradle-Dateien.
quelle
Dies geschieht aufgrund des Updates Ihres Android Studio von Android Studio 3.2.0 auf Android Studio 3.3.0. Aktualisieren Sie Ihre Gradle-Abhängigkeiten (Projekt) von IO.Fabric. Mögen:
und aktualisieren Sie auch Ihre Kotlin-Version auf
Dadurch werden diese Probleme behoben. Vielen Dank
quelle
Das Build-Protokoll druckt, wie dies debuggt wird, insbesondere wenn Sie Build mit ausführen müssen. Dadurch
-Pandroid.debug.obsoleteApi=true
wird die Stapelverfolgung des Aufrufs an die veraltete API gedruckt, und Sie können herausfinden, welches Plugin / welcher Code es aufruft.Wenn es sich um Ihren Code handelt, verwenden Sie die neue Provider-API ( lesen Sie das Dokument zur Konfiguration verzögerter Aufgaben ).
Wenn es von einem anderen Plugin stammt, melden Sie es ihnen mit Stack-Trace und Warnmeldung und senden Sie möglicherweise einen Patch. Wie in diesem Fall ist es mit dem
io.fabric
Problem verbunden.quelle
Dies wurde in der neuesten Version des Fabric Gradle Plugins 1.28.0 behoben, die heute online ging. Haben Sie dies in Ihrem Top-Level build.gradle:
quelle
Als ich das Projekt öffnete, drückte ich den
Run migrations
Knopf in der rechten unteren Ecke vonAndroid Studio
. Eine Migration wurde durchgeführt und das Problem wurde gelöst, ohne dieCrashlytics
Abhängigkeit auskommentieren zu müssen.quelle
Das Ändern der Quellkompatibilität in der Moduldatei
build.gradle
auf Java 8 behebt das ProblemStellen Sie sicher, dass Sie das Projekt nach dem Hinzufügen dieser Zeilen neu erstellen
quelle
build.gradle
oder in der Modulebene (/ App)?Dadurch wird der Fehler behoben: Klicken Sie in der Taskleiste auf Extras-> Kotlin-> Kotlin in Projekt konfigurieren
quelle
In meinem Fall musste ich ein
io.fabric
Plugin verwenden, und die Lösung bestand darin, auf die neueste Gradle-Version für Fabric-Tools zu aktualisieren:quelle
Für diejenigen, die das Fabric-Plugin beibehalten müssen, besteht die temporäre Lösung darin, auf Projektebene zur vorherigen Version des Gradle zurückzukehren.
Ändern Sie die Klassenpfadversion in
com.android.tools.build:gradle:3.2.1
.quelle
Es war ein Problem mit der neuesten
gradle
(in meinem Fall3.3.2
) Version und demFabric.io
Plugin. Es wird jetzt durch die neue Version gelöst. Benutzer sollten dies in ihrer obersten Ebene habenbuild.gradle
:quelle
Fix ist das Aktualisieren der Root-Build-Gradle-Dateien auf den neuesten Stand. Und diese Antwort gilt jetzt. in fureture wird wieder eine neue änderung von gradle und android SDK implementiert. Manchmal wird die Antwort im Laufe der Zeit variieren.
quelle
Zunächst einmal ist dies kein Fehler
es ist eine Warnung
und es wird angezeigt, wenn das Update auf 3.3.0 aktualisiert wird. Dies tritt häufig auf, weil io.fabric. Warten Sie also, bis die aktuelle Version des Update Fabric, in der immer noch eine Warnung angezeigt wird, "io.fabric.tools:gradle:1.27.1" lautet.
quelle