Как я могу исправить это 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

который выберет последнюю версию. Вы также можете увидеть подробнее информацию об этом исправлении.

Ответ 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.