Bu CrashlyticsMissingDependencyException'ı nasıl düzeltebilirim?


104

Bir süredir en son Crashlytics'i (Yapı entegrasyonu) kullanıyorum. Ancak son zamanlarda, Crashlytics yapılandırmalarıyla ilgili hiçbir şeyi değiştirmeme rağmen, eksik bağımlılık nedeniyle aşağıdaki kilitlenme hatasıyla karşılaştım.

Herhangi bir fikir?

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)

Aşağıdaki cevaplarda belirtildiği gibi, bir düzeltme üzerinde çalışıyoruz, ancak 1.14.4'ü kullanmak, bunun temeline inmeye devam ederken işe yarayacak.
Mike Bonnell

Fabrics for Android Studio çiftler zamanını kaldırıp kurmaya çalışıyorum. Akıl sağlığını geri kazanmak için birkaç kez yeniden başlatması gerekiyor.
Robert

Yanıtlar:


22

Şimdilik tek geçici çözüm, uygulamanızı gerçekten yayınlamanız gerekiyorsa (benim gibi), dinamik sürüm numaralarını statik olanlarla değiştirmektir:

[...]

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

[...]

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

[...]

DÜZENLE:

Fabric SDK'nın güncellenmiş bir sürümü yayınlandı; satırı buna değiştirerek elde edebilirsiniz:

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

1
Ne demek istediğinden emin değilim, ama ikisi aynı maven https://maven.fabric.io/repohttps://maven.fabric.io/public
deposu


96

Fabric / Crashlytics'i gerçekten kurmadan önce aşağıdaki kodları ekledim:

debug {
    ext.enableCrashlytics = false
}

Crashlytics ile ilk çalıştırmadan önce onu kaldırmak sorunu çözdü. Sorun artık ilk çalıştırmadan sonra ortaya çıkmaz.


2
1.20.1 ve 2.5.2@aar ile aynı sorunu alıyorum. Ancak, derleme çalışma alanı her derleme için sıfırlandığı için bu geçici çözümü CI'da kullanamıyorum :(
Hieu Rocker

1
Fabric'te mühendislerle çalışıyorum. Farklı saat dilimleri berbattı ve neredeyse 2 haftamızı aldı. Hala çözüm yok. Ancak CI: ./gradlew clean assemble üzerinde bir geçici çözüm deneyebilirsiniz, ardından ./gradlew assemble, ikinci komut tarafından oluşturulan apk normal çalışacaktır.
Hieu Rocker

3
@ThuyTrinh bunun dataBinding = true yüzünden olduğu ortaya çıktı. Crashlytics bunun için bir düzeltme yaptı: twittercommunity.com/t/…
Hieu Rocker

1
Fabric eklentisi bugün güncellendi ve bu hatayı aldım. Geçici çözüm yardımcı olur, ancak sonraki çalıştırmalarda işe yaramaz. Bu yüzden bu satırı koşmak için yorumlamalıyım.
Ernest

1
Benim için çalışmıyor Onuncom.crashlytics.sdk.android:crashlytics:2.6.8@aar
Tas

27

Bunu gradle'da yorumladım

apply plugin: 'io.fabric'

yorumunu kaldırmak için gerekli

Veya sizde yoksa ekleyin!


14

Eklenti sürümünü şu şekilde belirtmek gibi görünüyor:

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

sorunu olan 1.15.1'i alıyor.

Bir öncekine göre büyük ve küçük belirtmek 1.14kararlı görünüyor:

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

13

Eklentiyi güncelledikten sonra aynı sorunu yaşadım. çözmek için AndroidManifest.xml'den kaldırmanız gerekir:

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

ve fabric.properties'e ekleyin:

apiSecret=API_SECRET_KEY
apiKey=YOUR_SECRET_KEY

GÜNCELLEME:

Şimdi kullanmalısın:

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

1
Entegrasyon yönergeleri modası geçmiş görünüyordu. Görünüşe göre artık fabric.properties değil <meta-data android:name="io.fabric.ApiKey" android:value="YOUR_API_KEY"/>AM dosyasında a gerekiyor . "Com.crashlytics.ApiKey" olan ad "io.fabric.ApiKey" olarak değiştirildi.
Thuy Trinh

1
Evet sen haklisin. Bu önemli. Yazımı güncelledim. Teşekkür ederim.
Sergei K

13

Hata ayıklama sırasında devre dışı bırakma işlevini gösterildiği gibi kullanıyorsanız

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

Crashlytics'in sürümünü güncellediğinizde ne olur?

Fabric.with(this, crashlyticsKit); 

döndü

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

Bu nedenle, bunu crashlyticskit olarak değiştirdiğinizden emin olun. Bunu doğru şekilde yapıyorsanız ve hata hala görünüyorsa, sahip olduğunuzdan emin olun.

debug {

      ext.enableCrashlytics = false
 }

android {buildtypes {}} altında


11

Crashlytics'ten Mike burada. Bugün erken saatlerde, bu davranış için bir düzeltme içeren güncellenmiş bir sürüm - 1.15.2 - gönderdik. Eğer koşarsan:

./gradlew assemble --refresh-dependencies

en son sürümü çekecek. Düzeltmeyle ilgili daha fazla ayrıntıyı burada da görebilirsiniz .


1
Fabric entegrasyonunu yalnızca Crashlytics'in kendisi tarafından kullanmıyorum ve ayrıca CrashlyticsMissingDependencyException alıyorum. Bununla nasıl başa çıkabilirim?
bogumil

@bogumil build.gradle'ınızın bir bölümünü ekleyebilir misiniz?
Mike Bonnell

2
@MikeB Bir süre sonra tekrar CrashlyticsMissingDependencyException alıyorum. Kullanıyorum: bağımlılıklar {classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.crashlytics.tools.gradle: crashlytics-gradle: 1.16.0'} ve 'com.crashlytics.android' derleyin : crashlytics: 1.1.13 '
bogumil

Hmm, çok garip @bogumil. Yenileme bağımlılıklarını çalıştırmak yardımcı olur mu?
Mike Bonnell

@MikeB Yardımcı olmuyor. Ayrıca support @ adresine bir e-posta gönderdim ve gerekirse daha fazla ayrıntı verebilirim.
bogumil

5

Resmi kaynaktan benim için düzelt

Hata Ayıklama Derlemeleri için Crashlytics'i devre dışı bırakın

Hata ayıklama yapıları için Crashlytics kilitlenme raporlamasına veya beta dağıtımına ihtiyacınız yoksa, eklentiyi aşağıdaki iki adımla tamamen devre dışı bırakarak hata ayıklama yapılarınızı güvenle hızlandırabilirsiniz:

Önce bunu uygulamanızın build.gradle dosyasına ekleyin:

android {
    buildTypes {
        debug {
          // Disable fabric build ID generation for debug builds
          ext.enableCrashlytics = false
          ...

Ardından, Crashlytics kitini çalışma zamanında devre dışı bırakın. Aksi takdirde, Crashlytics kiti aşağıdaki hatayı verir:

com.crashlytics.android.core.CrashlyticsMissingDependencyException:

This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up`

Yalnızca aşağıdaki kodla hata ayıklama derlemeleri için çalışma zamanında kiti devre dışı bırakabilirsiniz:

// 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

Sorun, yanlışlıkla Android Studio / IntelliJ otomatik içe aktarmalarıyla çok kolay olan Crashlytics BuildConfig'i eklerseniz de oluşur.

İthal ettim

import com.crashlytics.android.core.BuildConfig;

Benim yerine

import <package_name>.BuildConfig;



3

Benim durumumda, diğer tüm modüllere (uygulama dahil) bağımlılık olarak eklenen bir "CommonLib" modülünde kumaş kullanıyordum. Yani bloktan apply plugin: 'io.fabric'sonra ekledim buildscript {}. Bu yüzden iki eklentiyi bir araya getirdim:

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

Ve sorun çözüldü!


1

apply plugin: 'io.fabric'Uygulama projenize eklemeyi unutmayın build.gradle. Benim durumumda, ben ortak vardı build.gradleile apply plugin: 'io.fabric'. Uygulama projesine taşımak sorunu çözdü.


0

Bunun başka birine yardımcı olması durumunda, Crashlytics'i Fabric'e yükseltirken benzer bir sorun yaşadım. Benim durumumda, eklenti, çalışmadan önce manuel olarak kaldırmam gereken Crashlytics'ten 2 satır bıraktı.

Gradle dosyasında, buildscript bağımlılıkları altında, manuel olarak kaldırmak zorunda kaldım:

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

Ayrıca, bağımlılıklar altında, manuel olarak kaldırmak zorunda kaldım:

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

0

Build.gradle dosyasında crashlytics'in devre dışı bırakılıp bırakılmadığını kontrol edin

    debug {
        ext.enableCrashlytics = false
    }

Bunun yerine kullanın

    debug {
        ext.enableCrashlytics = true
    }

0

Cevap vermekte geç kaldım. Ancak bu, yukarıdaki yanıtların tümü dışında bir nedenden daha kaynaklanabilir.

Eğer eklemeyi özlersen

apply plugin:'io.fabric'

Bu tuhaf görünebilir ama bu aynı soruna neden olur

Bu, IDE Kullanarak Fabric penceresinden kaydolup kod eklediğimizde kumaş tarafından varsayılan olarak eklenir, ancak yanlışlıkla silinebilir.


0

Uygulama simgesinin kaldırılması, Crashylitics düzeltildi, ne oldu?

Her şeyi ilk katılım eğitimine, en son sürümleri kullanarak vb. Yaptım.

Bunu anlamaya çalışırken bir saatimi boşa harcadım. Birinin, context.packageNamebir bağlam verilmiş uygulamanın kaynaklarını almak yerine uygulama simgesinin paket adını okumanın iyi bir fikir olduğunu düşündüğü ortaya çıktı . Bu yöntemde yapılır:

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

Örneğin, APK içeride değil bir simge kullanmak için ne bu besbelli patlar: android:icon="@android:drawable/sym_def_app_icon". Muhtemelen o zamanlar iyi bir fikirdi, ne garip hatayı çözmeye çalıştıklarını merak ettin mi ?!


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

Bunu içeri ekleyin AndroidManifest.xml.


Yani sorunu çözmek için çözümünüz Crashlytics'i tamamen devre dışı bırakmak mı?
JJJ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.