Як я можу виправити цю CrashlyticsMissingDependencyException?


104

Я вже деякий час використовую останні 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's 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's 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.14.4 буде працювати, поки ми продовжуємо доходити до цього.
Майк Боннелл

Я просто намагаюся видалити та встановити час Fabrics для пар Android Studio. ЯК потрібно перезапустити пару раз, щоб повернути його розумність.
Роберт

скористайтесь цим посиланням docs.fabric.io/android/crashlytics/…
Шервін Гаріб

Відповіді:


22

Наразі єдине рішення, якщо вам справді потрібно опублікувати додаток (як я), - це змінити динамічні номери версій на статичні:

[...]

classpath 'io.fabric.tools:gradle:1.14.4'

[...]

compile('com.crashlytics.sdk.android:crashlytics:2.2.0@aar') {
        transitive = true
}

[...]

Редагувати:

опублікована оновлена ​​версія SDK Fabric; ви можете отримати його, змінивши рядок на цей:

classpath 'io.fabric.tools:gradle:1.26.1'

1
Я не впевнений, що ви маєте на увазі, але вони два однакові https://maven.fabric.io/repohttps://maven.fabric.io/public
репортажі


96

Я додав наступні коди, перш ніж я фактично встановив Fabric / Crashlytics:

debug {
    ext.enableCrashlytics = false
}

Видалення його до першого запуску з Crashlytics вирішило проблему. Проблема більше не виникає після першого запуску.


2
Я отримую те саме питання з 1.20.1 та 2.5.2@aar. Але я не можу використовувати це вирішення на CI, оскільки робоча область збирання скидається для кожної збірки :(
Hieu Rocker

1
Я працюю з інженерами в Fabric. Різні часові пояси висмоктуються, і нам це зайняло майже 2 тижні. Все ще немає рішення. Але ви можете спробувати вирішити CI: ./gradlew clean assemble, тоді ./gradlew збирати, apk, згенерований другою командою, буде працювати нормально.
Hieu Rocker

3
@ThuyTrinh виявилося, що це через dataBinding = true. Crashlytics розробила виправлення для цього: twittercommunity.com/t/…
Hieu Rocker

1
Сьогодні оновлено плагін із тканини, і ця помилка. Обхід допомагає, але він не працює на наступних пробігах. Тому я повинен коментувати цей рядок для запуску.
Ернест

1
Це не працює для мене вcom.crashlytics.sdk.android:crashlytics:2.6.8@aar
Tas

27

Я це прокоментував у градусах

apply plugin: 'io.fabric'

потрібно, щоб його не коментувати

Або якщо у вас його немає, додайте його!


14

Схоже, вказана версія плагіна як:

classpath 'io.fabric.tools:gradle:1.+' 

підбирає 1.15.1, що має проблему.

Визначення основного та другорядного рівнів попереднього 1.14здається стабільним:

classpath 'io.fabric.tools:gradle:1.14.+'

13

У мене була така ж проблема після оновлення плагіна. щоб вирішити необхідність видалити з AndroidManifest.xml:

<meta-data
    android:name="com.crashlytics.ApiKey"
    android:value="API_SECRET_KEY" />

і додати в fabric.properties:

apiSecret=API_SECRET_KEY
apiKey=YOUR_SECRET_KEY

ОНОВЛЕННЯ:

Тепер ви повинні використовувати:

  <meta-data
      android:name="io.fabric.ApiKey"
      android:value="API_KEY" />

1
Їх інтеграційні настанови видалися застарілими. Здається, більше не потрібні fabric.properties, але файл <meta-data android:name="io.fabric.ApiKey" android:value="YOUR_API_KEY"/>у файлі AM. Назву було змінено з "com.crashlytics.ApiKey" на "io.fabric.ApiKey".
Чт Трінь

1
Так, ти маєш рацію. Це важливо. Я оновив свою публікацію. Дякую.
Сергій К

13

Якщо ви використовуєте функцію відключення під час налагодження, як показано

 Crashlytics crashlyticsKit = new Crashlytics.Builder()
            .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
            .build();
    Fabric.with(this, crashlyticsKit);

Що відбувається, коли ви оновлюєте версію крашлітиків, це те, що

Fabric.with(this, crashlyticsKit); 

звертається до

Fabric.with(this,new Crashlytics());

Тож переконайтеся, що поверніть цю програму на програму crashlyticskit. Якщо ви робите це правильно, і помилка все ж з’являється, тоді переконайтеся, що у вас є

debug {

      ext.enableCrashlytics = false
 }

під android {buildtypes {}}


11

Майк від Crashlytics тут. Ми поставляли оновлену версію - 1.15.2 - раніше сьогодні, яка містить виправлення такої поведінки. Якщо ви запускаєте:

./gradlew assemble --refresh-dependencies

що буде в останній версії. Ви також можете побачити більше деталей щодо виправлення тут.


1
Я не використовую інтеграцію тканин лише самими Crashlytics, а також отримую CrashlyticsMissingDependencyException. Як я міг з цим боротися?
bogumil

@bogumil Ви можете включити частину свого build.gradle?
Майк Боннелл

2
@MikeB Через деякий час я знову отримую CrashlyticsMissingDependencyException. Я використовую: зависимості {classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.crashlytics.tools.gradle: crashlytics-gradle: 1.16.0'} та компілюю 'com.crashlytics.android : крахлітики: 1.1.13 '
bogumil

Хм, дуже дивно @bogumil. Чи допомагає запущена залежність оновлення?
Майк Боннелл

@MikeB Це не допомагає. Я також надіслав електронний лист на підтримку @, і я можу надати більше деталей, якщо потрібно.
богуміль

5

Виправлення для мене з офіційного джерела

Вимкнути катастрофіку для налагоджень

Якщо вам не потрібні звіти про аварії Crashlytics або розподіл бета-версії для складання налагодження, ви можете безпечно прискорити складання налагодження, відключивши плагін цілком за допомогою цих двох кроків:

Спочатку додайте це до 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);

5

Проблема також виникає, якщо ви випадково включите Crashlytics BuildConfig - це дуже легко зробити з автоматичним імпортом Android Studio / IntelliJ.

Я імпортував

import com.crashlytics.android.core.BuildConfig;

Замість моєї власної

import <package_name>.BuildConfig;



3

У моєму випадку я використовував тканину в модулі "CommonLib", який був доданий як залежність до всіх інших модулів (включаючи додаток). Отже, я додав apply plugin: 'io.fabric'після buildscript {}блоку. Отже, я розмістив два плагіни разом:

apply plugin: 'com.android.library' 
apply plugin: 'io.fabric'

І проблема вирішена!


1

Обов’язково додайте apply plugin: 'io.fabric'у свій проект програми build.gradle. У моєму випадку у мене було спільне build.gradleз apply plugin: 'io.fabric'. Переміщення його до проектного проекту вирішило проблему.


0

Якщо це допомагає комусь іншому, у мене виникли подібні проблеми при модернізації Crashlytics до Fabric. У моєму випадку плагін залишив два рядки від Crashlytics, які мені потрібно було видалити вручну, перш ніж він запрацював.

У файлі gradle, в залежності від buildscript, мені довелося видалити вручну:

classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.16.0'

Також, в залежності, мені довелося видалити вручну:

compile 'com.crashlytics.android:crashlytics:1.1.13'

0

Перевірте, чи не вимкнено аварійні файли у файлі build.gradle

    debug {
        ext.enableCrashlytics = false
    }

Замість використання

    debug {
        ext.enableCrashlytics = true
    }

0

Можливо, я спізнююсь відповісти. Але це може статися з ще однієї причини, окрім усіх вищезазначених відповідей

Якщо ви пропустите додавання

apply plugin:'io.fabric'

Це може здатися дивним, але це призведе до того ж питання

Це за замовчуванням додається тканиною, коли ми підписуємось та додаємо код у вікні Тканини за допомогою IDE, але випадково його можна видалити.


0

Видалення значка програми виправлено Crashylitics, whaaat?

Я все робив на основі навчального посібника, використовуючи останні версії тощо.

Щойно витратили годину, намагаючись розібратися в цьому. Виявляється, хтось подумав, що було б гарною ідеєю прочитати назву пакета піктограми програми, а context.packageNameне отримати ресурси програми з урахуванням контексту. Це робиться таким методом:

io.fabric.sdk.android.services.common.CommonUtils#getResourcePackageName

Це , очевидно , підриває якщо ви будете використовувати значок, це не всередині APK, наприклад: android:icon="@android:drawable/sym_def_app_icon". Напевно, це була гарна ідея в той час, дивуйтеся, над якою дивною помилкою вони намагалися працювати ?!


-1
<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" /> 

Додайте це до AndroidManifest.xml.


Тож ваше рішення для вирішення проблеми полягає в тому, щоб повністю відключити Crashlytics?
JJJ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.