Как я могу исправить это CrashlyticsMissingDependencyException?
Я использую последнюю версию Crashlytics (интеграция с тканью) некоторое время. Но недавно я столкнулся со следующей ошибкой сбоя из-за отсутствия зависимости, хотя я ничего не изменил в конфигурациях Crashlytics.
любая идея?
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \ | | /
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \ /
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \ /
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \/
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an Android build tool and ask a team member to invite you to this app organization.
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . /\
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . / \
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . / \
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . / | | \
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935 18887-18887/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.android.staging, PID: 18887
java.lang.RuntimeException: Unable to create application com.example.android.App: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: com.crashlytics.android.CrashlyticsMissingDependencyException:
This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an Android build tool and ask a team member to invite you to this app organization.
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4734)
at android.app.ActivityThread.access$1600(ActivityThread.java:171)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1357)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5506)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Ответы
Ответ 1
Единственный обходной путь на данный момент, если вам действительно нужно опубликовать свое приложение (как я), то измените динамические номера версий на статические:
[...]
classpath 'io.fabric.tools:gradle:1.14.4'
[...]
compile('com.crashlytics.sdk.android:crashlytics:[email protected]') {
transitive = true
}
[...]
РЕДАКТИРОВАТЬ:
была опубликована обновленная версия фабрики sdk, вы можете получить ее, изменив строку на эту:
classpath 'io.fabric.tools:gradle:1.26.1'
Ответ 2
Я добавил следующие коды, прежде чем я установил Fabric/Crashlytics:
debug {
ext.enableCrashlytics = false
}
Удаление его перед первым запуском с Crashlytics решило проблему. Проблема не возникает после первого запуска.
Ответ 3
Я прокомментировал это в gradle
apply plugin: 'io.fabric'
необходимо раскомментировать его
Или, если у вас его нет, добавьте его!
Ответ 4
Похоже, указав версию плагина как:
classpath 'io.fabric.tools:gradle:1.+'
поднимает 1.15.1, которая имеет проблему.
Определение основных и второстепенных для предыдущих 1.14
кажется стабильным:
classpath 'io.fabric.tools:gradle:1.14.+'
Ответ 5
У меня была такая же проблема после обновления плагина.
для устранения необходимости удалить из AndroidManifest.xml:
<meta-data
android:name="com.crashlytics.ApiKey"
android:value="API_SECRET_KEY" />
и добавьте в fabric.properties:
apiSecret=API_SECRET_KEY
apiKey=YOUR_SECRET_KEY
UPDATE:
Теперь вы должны использовать:
<meta-data
android:name="io.fabric.ApiKey"
android:value="API_KEY" />
Ответ 6
Если вы используете функцию отключения во время отладки, как показано
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
Fabric.with(this, crashlyticsKit);
Что происходит, когда вы обновляете версию crashlytics, это то, что
Fabric.with(this, crashlyticsKit);
поворачивается на
Fabric.with(this,new Crashlytics());
Поэтому обязательно измените это на crashlyticskit. Если вы делаете это правильно и ошибка все же появляется, убедитесь, что у вас есть
debug {
ext.enableCrashlytics = false
}
под андроид {buildtypes {}}
Ответ 7
Майк из Crashlytics здесь. Мы отправили обновленную версию - 1.15.2 - ранее сегодня, которая включает исправление для этого поведения. Если вы запустите:
./gradlew assemble --refresh-dependencies
который выберет последнюю версию. Вы также можете увидеть подробнее информацию об этом исправлении.
Ответ 8
Для меня это было из-за dataBinding = true
. Обновление плагина gradle до версии 1.21.0 устраняет проблему: https://twittercommunity.com/t/fabric-gradle-plugin-1-21-0-add-support-for-android-databinding-true/57474
Ответ 9
Исправить для меня
Из официального источник
Отключить Crashlytics для отладки сборки
Если вам не нужны отчеты Crashlytics crash или бета-дистрибутивы для отладочных сборников, вы можете безопасно ускорить ваши отладочные сборки, полностью отключив плагин с помощью этих двух шагов:
Сначала добавьте это в свои приложения build.gradle:
android {
buildTypes {
debug {
// Disable fabric build ID generation for debug builds
ext.enableCrashlytics = false
...
Затем отключите комплект Crashlytics во время выполнения. В противном случае набор Crashlytics выдает следующую ошибку:
com.crashlytics.android.core.CrashlyticsMissingDependencyException:
This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up`
Вы можете отключить набор во время выполнения для отладочных сборников только с помощью следующего кода:
// Set up Crashlytics, disabled for debug builds
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with(this, crashlyticsKit);
Ответ 10
Проблема также возникает, если вы случайно включите Crashlytics BuildConfig - очень легко сделать с авто-импортом Android Studio/IntelliJ.
Я импортировал
import com.crashlytics.android.core.BuildConfig;
Вместо моего собственного
import <package_name>.BuildConfig;
Ответ 11
В моем случае я использовал материал в модуле CommonLib, который был добавлен как зависимость во всех других модулях (включая приложение).
Итак, я добавил apply plugin: 'io.fabric'
после buildscript {}
блока. Итак, я поместил два плагина вместе:
apply plugin: 'com.android.library'
apply plugin: 'io.fabric'
И проблема решена!
Ответ 12
Проверьте, отключена ли crashlytics в файле build.gradle
debug {
ext.enableCrashlytics = false
}
Вместо этого используйте
debug {
ext.enableCrashlytics = true
}
Ответ 13
Если это помогает кому-то другому, у меня была аналогичная проблема при обновлении Crashlytics to Fabric. В моем случае плагин оставил 2 строки из Crashlytics, которые мне нужно было удалить вручную, прежде чем он сработает.
В файле gradle, в зависимостях buildscript, мне пришлось вручную удалить:
classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.16.0'
Кроме того, в зависимостях мне пришлось вручную удалить:
compile 'com.crashlytics.android:crashlytics:1.1.13'
Ответ 14
Может быть, я опоздал, чтобы ответить.
Но это может произойти из-за еще одной причины, кроме всех вышеперечисленных ответов.
Если вы пропустите добавить
apply plugin:'io.fabric'
Это может показаться странным, но это приведет к той же проблеме
Это по умолчанию добавляется тканью, когда мы подписываемся и добавляем код из окна Fabric. Используя IDE, но случайно его можно удалить.
Ответ 15
Обязательно добавьте apply plugin: 'io.fabric'
в свой проект приложения build.gradle
. В моем случае у меня был общий build.gradle
с apply plugin: 'io.fabric'
. Перенос его в прикладной проект решил проблему.
Ответ 16
Удаление значка приложения исправлено Crashylitics, что?
У меня все было сделано на основе учебного пособия, с использованием последних версий и т.д.
Просто потратил час, пытаясь понять это. Оказывается, кто-то думал, что было бы неплохо прочитать имя пакета значка приложения вместо context.packageName
чтобы получить ресурсы приложения с учетом контекста. Это сделано в этом методе:
io.fabric.sdk.android.services.common.CommonUtils#getResourcePackageName
Это, очевидно, взрывается, если вы используете значок, который не находится внутри APK, например: android:icon="@android:drawable/sym_def_app_icon"
. В то время это была хорошая идея, интересно, какую странную ошибку они пытались обойти?!
Ответ 17
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
Добавьте это в AndroidManifest.xml
.