Использование 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.
@ Skizo-ozᴉʞS добавил файл build.gradle проекта
@alashow это связано с другой проблемой, есть сообщение "API 'option.getJavaCompile ()' устарел .."
Проблема существует и со стабильной версией
Также существует с обновлением плагина Fabric Gradle до последней версии (1.27.0)
@JudeFernandes, знаете ли вы, что есть разница между предупреждением и ошибкой?
Теперь вы можете исправить это с помощью classpath 'io.fabric.tools:gradle:1.28.0'
Проблема исправлена в последней версии. Проверить комментарий. stackoverflow.com/a/55193824/3806413
Я все еще получаю это предупреждение с classpath 'io.fabric.tools:gradle:1.31.0' и implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
Поддержка Fabric прекращается 31 марта 2020 г., и ее разработка полностью перенесена на Firebase Crashlytics.
средство отслеживания проблем может относиться к «ленивой настройке задачи» -
это по крайней мере то, что предлагает предотвращение конфигурации задачи.
но, возможно, можно предотвратить доступ к этому устаревшему методу BaseVariantImpl, когда variant.outputs.all не будет обращаться к этому методу (внутренне) - или когда проверки могут предотвратить доступ; или при доступе к варианту по его имени; или как-то отключить внешние собственные задачи сборки для варианта. также см. параметр одновариантная синхронизация проекта, который, скорее, кажется связанным.
или дождитесь инструменты для сборки3.3.0-alpha12 или 3.3.0-beta1 ... это даже не release candidate, поэтому тратить много времени может быть бессмысленно - кроме использования его для отправки другого отчета об ошибке.
Новая кнопка быстрой обратной связи
по-прежнему выглядит наиболее многообещающей.
Да, я согласен, этого типа ошибок не было в предыдущих инструментах сборки. Следующий RC может исправить это
это не было исправлено в выпуске
android.debug.obsoleteApi=true, чтобы посмотреть, откуда он. Было переименовано несколько методов с добавлением к их имени Provider.
@MartinZeitler, где это поместить, чтобы AS проверяла устаревший api? Я имею ввиду android.debug.obsoleteApi = true
@SergeyNarozhnyy в проекте gradle.properties
@SergeyNarozhnyy релиз 3.3.0 сломал несколько вещей, так как вариант API изменился. можно связать одно недавнее обсуждение: stackoverflow.com/questions/54206898/… (добавлено резюме в качестве ответа).
Не уверен, в чем заключается реальная проблема, но комментирование зависимостей, связанных с аварийным завершением работы, из решенной проблемы проекта.
РЕДАКТИРОВАТЬ
Эта проблема исправлена в Ткань 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
Однако вы все равно можете создавать и запускать свои проекты, даже если появляется эта ошибка. Просто не обращай на это внимания.
да тут такая же ошибка. Невозможно построить проект. вернуться к 3,2
Можно ли было бы указать ссылку на отчет об ошибке или проблему, которую вы открыли с помощью Firebase? Я бы с удовольствием проголосовал за это.
Простите @yuval, ссылку выложить не могу. Firebase не предоставляет общедоступного отслеживания ошибок, такого как Google Issue Tracker. Они делают это только по электронной почте.
после этого приложение вылетает во время выполнения.
Мне нужно использовать плагин io.fabric, тогда как я могу удалить это предупреждение, не меняя его?
А также отключите зависимость Crashlytics.
Это причина, а не жизнеспособное решение
Я не могу сейчас использовать Crashlytics.
Говорят, им можно пользоваться до конца 2019 года. А пока пользуюсь, посмотрим что будет)
@DarshanMiskin, это нормально, либо полностью удалите аварийные сообщения, либо оставьте предупреждение. Если ваше приложение вообще не строится, вы можете найти решение в комментариях ниже.
Это определенно кажется причиной, потому что переход на Firebase crashlytics не решит эту проблему, поскольку Fabric интегрирует свои функции в Firebase, я следую этому руководству: proandroiddev.com/…
Зачем понижать? Не имеет смысла! Это просто предупреждение, оно еще не удалено и может построить ваш проект (весь 2019 год ...). Я верю, что они исправят это в течение этого года
Я согласен, потому что просто предупреждение о понижении рейтинга кажется слишком экстремальным. Если его платформа изменится, (Google), скорее всего, сделает это явным, например, что мы должны перейти от фабрики к конфигурации типа аварийной базы firebase.
На данный момент лучше всего жить с предупреждением. Может в ближайшее время исправят
io.fabric.tools:gradle:1.27.1 все еще имеет эту проблему.
Я получил эту ошибку после удаления этого. Идентификатор сборки Crashlytics отсутствует. Это происходит, когда инструменты Crashlytics отсутствуют в конфигурации сборки вашего приложения.
в приложении build.gradle перейдите на эту стабильную версию gradle:
classpath 'com.android.tools.build:gradle:3.2.1'
Это происходит после того, как я обновил Android Studio до версии 3.3, временное решение, пока они не исправят это!
изменить: вам не нужно понижать версию вашей студии Android!
Затем вам также необходимо перейти на Android Studio 3.2.1. Спасибо, в любом случае
Это сработало, ничего не понижая, спасибо за предложение
У меня была такая же проблема после обновления Android Studio (AS) до версии 3.3. Я снова получил синхронизацию Gradle, понизив Gradle до версии 4.6 и Android Gradle Plugin до версии 3.2.1, которые были теми версиями, которые я использовал до обновления AS. Посмотрите таблицу здесь, если вы сомневаетесь, как изменить версии для gradle и плагина.
Поскольку мой ответ был преобразован в комментарий, который вы видите выше, позвольте мне добавить, что я не смог заставить предлагаемое решение этого ответа работать, изменив только версию плагина gradle на 3.2.1. Мне также пришлось понизить Gradle до 4.6, иначе Gradle Sync все равно жаловался бы.
вам не нужно понижать версию вашей студии Android @ RubénViguera
Вам не нужно понижать версию, кроме версии gradle, как указано в ответе. Это должен быть принятый ответ.
Изменение исходной совместимости в файле модуля build.gradle на Java 8 устраняет проблему.
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
Не забудьте перестроить проект после добавления этих строк
На верхнем уровне build.gradle или уровне модуля (/ app)?
уровень модуля (приложение)
это было исправлено в последнем выпуске плагина Fabric Gradle 1.28.0, который был запущен сегодня. Имейте это в своем build.gradle верхнего уровня:
buildscript {
// ... repositories, etc. ...
dependencies {
// ...other dependencies ...
**classpath 'io.fabric.tools:gradle:1.28.0'**
}
это исправит ошибку: На панели задач нажмите Инструменты-> Kotlin-> Настроить Kotlin в Project.
Журнал сборки распечатывает, как это отлаживать, в частности, вам нужно запустить сборку с -Pandroid.debug.obsoleteApi=true, которая распечатает трассировку стека вызова устаревшего API, и вы сможете определить, какой плагин / код вызывает его.
Если это окажется вашим кодом - использовать новый Provider API (прочитать документ о конфигурации ленивых задач)
Если он исходит из другого плагина - сообщить им с трассировкой стека и предупреждением и, возможно, отправить патч. Поскольку в данном случае это связано с проблемой io.fabric.
В моем случае мне нужно было использовать плагин io.fabric, и решение заключалось в обновлении до последней версии Gradle инструментов Fabric:
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' для решения этой проблемы!
Если комментирование плагина Crashlyticsio.fabric в файле приложения gradle временно сработало для вас
//apply plugin: 'io.fabric'
Затем обновление зависимостей Gradle вашей фабрики в файле Project Gradle навсегда решит проблему:
classpath 'io.fabric.tools:gradle:1.27.0'
NB: это не удаляет предупреждения, но позволяет использовать Crashlytics с AS3.3 +.
@RJB Вы используете Crashlytics? Если вы удалите его из своего проекта, он заработает? Если да, то это должно решить проблему. Однако вы все равно можете получать предупреждения, но проект будет скомпилирован, и вы можете безопасно сгенерировать свой apk
да. Я имею в виду, что я все еще получаю предупреждение.
у op и других (включая меня) была эта проблема, и они не смогли скомпилировать проект с включенным crashlytics. Таким образом, чтобы сохранить Crashlytics и продолжать продвигать продукт, вы можете использовать вышеупомянутое обновление, даже если оно по-прежнему вызывает «предупреждения».
Для тех, кому нужно сохранить плагин Fabric, временное решение - вернуться к предыдущей версии градиента на уровне проекта.
Измените версию пути к классам на com.android.tools.build:gradle:3.2.1.
Это подтверждено как ошибка для Crashlytics, и они работают над этим.
https://issuetracker.google.com/issues/116408637
Цитата из правопреемника Google:
[email protected] #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 ...).
Они предлагают перейти по этой ссылке для обновлений 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 :)
Последние новости от 24.01.2019
Информация здесь https://issuetracker.google.com/issues/116408637
Нам нужно будет подождать, пока Crashlytics не предложит решение, вот проблема с GitHub.
https://github.com/firebase/firebase-android-sdk/issues/198
Единственный способ, которым я сейчас пользуюсь, чтобы не комментировать плагин io.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
}
Как насчет того, чтобы мы просто добавили -dontwarn com.crashlytics.android.Crashlytics в proguard-rules.pro
Если вы удалите предупреждение, сделав так, что проблема все еще существует, и вам нужно будет в конечном итоге вернуться к проблеме снова.
Верно! Это временное решение для компиляции сборки, но оно намного лучше, чем откатить все на более раннюю версию.
Да, при переходе на более раннюю версию она будет работать. Если вы отклоните предупреждение, вы можете сохранить обновленную версию, но она не будет работать.
@Mustansir, я думаю, это проблема, связанная с gradle и не имеющая ничего общего с Proguard.
Как было сказано, проблема в Fabric / Crashlytics.
apply plugin: 'io.fabric'
Это ошибка на стороне Crashlytics / Firebase, пожалуйста, проверьте следующую ссылку и посмотрите статус ошибки: https://github.com/firebase/firebase-android-sdk/issues/198
во-первых, это не ошибка
это предупреждение
а также он появляется при обновлении gradle до 3.3.0 Часто возникает из-за того, что io.fabric, поэтому подождите, пока ткань не обновится. текущая версия, в которой все еще отображается предупреждение, - 'io.fabric.tools:gradle:1.27.1'
Это происходит из-за обновления вашей Android Studio с Android Studio 3.2.0 до Android Studio 3.3.0. Обновите свои Gradle-зависимости (проект) IO.Fabric. Нравиться:
classpath 'io.fabric.tools:gradle:1.27.1'
а также обновите свою версию Kotlin до
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.20"
Это решит эту проблему. Спасибо
Спасибо. Ваш ответ мне помог.
@Sean Если вы используете Kotlin и io febric. Тогда он работает, в противном случае для работы понизьте версию пути к классам. Он будет работать ...
Идентификатор сборки Crashlytics отсутствует. Это происходит, когда инструменты Crashlytics отсутствуют в конфигурации сборки вашего приложения.
Это была проблема с последней версией 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'.
Обновите оба инструмента Gradle Fabric с помощью 1,30,0
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 как на уровне проекта, так и на уровне приложения.
В версии 1.28.0 моя проблема исправлена, текущая версия - 1.29.0 docs.fabric.io/android/changelog.html#fabric-gradle-plugin
Вот журнал изменений: docs.fabric.io/android/changelog.html#march-15-2019
Я все еще получаю это предупреждение с classpath 'io.fabric.tools:gradle:1.31.0' и implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'. Он либо снова сломан, либо исправлен не во всех случаях.
Где вы взяли эту Gradle версию инструментов для ткани? Могу найти только 1.25.4 mvnrepository.com/artifact/io.fabric.tools/gradle
Поддержка Fabric прекращается 31 марта 2020 г., и ее разработка полностью перенесена на Firebase Crashlytics.
Для себя я выполнил следующие шаги: 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'
}
Можете ли вы опубликовать свой build.gradle (приложение)?