मैं इस CrashlyticsMissingD dependencyException को कैसे ठीक कर सकता हूं?


104

मैं कुछ समय के लिए नवीनतम 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 का उपयोग करते हुए काम करेंगे, जबकि हम इसके निचले हिस्से में जाते रहेंगे।
माइक बॉननेल

मैं सिर्फ एंड्रॉइड स्टूडियो कपल्स के समय के लिए फैब्रिक को अनइंस्टॉल और इंस्टॉल करने की कोशिश करता हूं। अपनी पवित्रता वापस पाने के लिए दंपति को पुनः आरंभ करने की आवश्यकता है।
रॉबर्ट

इस लिंक का उपयोग करें 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
}

[...]

संपादित करें:

फैब्रिक एसडीके का एक अद्यतन संस्करण प्रकाशित किया गया है; आप इसे लाइन को बदलकर प्राप्त कर सकते हैं:

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

1
मुझे यकीन नहीं है कि आप क्या मतलब है, लेकिन वे दो समान maven repos: https://maven.fabric.io/repoऔरhttps://maven.fabric.io/public
gw0

1
यहाँ संस्करण उपलब्ध हैं: s3.amazonaws.com/fabric-artifacts/public/io/fabric/tools/gradle/…
जोस एंटोनियो

96

फैब्रिक / क्रैशलाईटिक्स को स्थापित करने से पहले मैंने निम्नलिखित कोड जोड़े हैं:

debug {
    ext.enableCrashlytics = false
}

क्रैशलाईटिक्स के साथ पहले रन से पहले इसे हटाने से समस्या हल हो गई। समस्या पहले रन के बाद नहीं होती है।


2
मुझे 1.20.1 और 2.5.2@AR के साथ एक ही मुद्दा मिल रहा है। लेकिन मैं सीआई पर इस वर्कअराउंड का उपयोग नहीं कर सकता क्योंकि बिल्ड वर्कस्पेस हर बिल्ड के लिए रीसेट हो जाता है :(
हिअर रॉकर

1
मैं फैब्रिक में इंजीनियरों के साथ काम कर रहा हूं। विभिन्न टाइमज़ोन चूसते हैं और यह हमें लगभग 2 सप्ताह पहले ही ले चुका है। फिर भी अभी तक कोई हल नहीं निकला। लेकिन आप CI पर एक वर्कअराउंड आज़मा सकते हैं: ./gradlew क्लीन असेंबल, फिर ./gradlew असेंबल करें, दूसरी कमांड द्वारा उत्पन्न एपीके सामान्य रूप में काम करेगा।
हियर रॉकर

3
@ThuyTrinh ने डेटाबाइंडिंग = सत्य के कारण इसे छोड़ दिया। Crashlytics इसके लिए एक ठीक बाहर लुढ़का हुआ है: twittercommunity.com/t/...
Hieu रॉकर

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

और कपड़े में जोड़ें।

apiSecret=API_SECRET_KEY
apiKey=YOUR_SECRET_KEY

अपडेट करें:

अब, आपको उपयोग करना होगा:

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

1
उनका एकीकरण दिशानिर्देश पुराना लग रहा था। लगता है अब कपड़े की जरूरत नहीं है। उत्पादों पर एक <meta-data android:name="io.fabric.ApiKey" android:value="YOUR_API_KEY"/>AM फ़ाइल में। नाम को "com.crashlytics.ApiKey" से बदलकर "io.fabric.ApiKey" कर दिया गया।
Thuy Trinh

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());

तो यह सुनिश्चित करें कि वापस दुर्घटनाग्रस्त स्थान पर बदलें। यदि आप इसे सही ढंग से कर रहे हैं और त्रुटि अभी भी दिखाई देती है तो सुनिश्चित करें कि आपके पास है

debug {

      ext.enableCrashlytics = false
 }

Android {buildtypes {}} के तहत


11

यहां क्रैशशेटिक्स से माइक। हमने आज अपडेट किया गया संस्करण - 1.15.2 - पहले भेज दिया जिसमें इस व्यवहार के लिए एक फिक्स शामिल है। यदि आप चलाते हैं:

./gradlew assemble --refresh-dependencies

नवीनतम संस्करण में खींच जाएगा। आप यहां फिक्स पर अधिक विवरण भी देख सकते हैं।


1
मैं केवल Crashlytics द्वारा फैब्रिक एकीकरण का उपयोग नहीं कर रहा हूं और मैं CrashlyticsMissingD dependencyException भी प्राप्त कर रहा हूं। मैं इससे कैसे निपट सकता था?
बोगुमिल 21

@bogumil क्या आप अपने build.gradle का हिस्सा शामिल कर सकते हैं?
माइक बॉननेल

2
@ माइक कुछ समय बाद, फिर से मुझे CrashlyticsMissingD dependencyException मिल रही है। मैं उपयोग कर रहा हूँ: निर्भरताएँ {classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.crashlytics.tools.gradle: crashlytics-gradle: 1.16.0'} और संकलन 'com.crashlytics.android : क्रैशलीटिक्स: १.१.१३ '
बोगुमिल २०'१५

हम्म, बहुत अजीब @bogumil। क्या रिफ्रेश-डिपेंडेंसी चलाने से मदद मिलती है?
माइक बॉननेल

@ माइक यह मदद नहीं करता है। मैंने @ का समर्थन करने के लिए एक ईमेल भी भेजा है और यदि आवश्यक हो तो मैं और अधिक विवरण दे सकता हूं।
बोगुमिल

5

मेरे लिए आधिकारिक स्रोत से ठीक करें

डिबग बिल्ड के लिए क्रैशशेटिक्स को अक्षम करें

यदि आपको डिबग बिल्ड के लिए क्रैशटाइटिक्स क्रैश रिपोर्टिंग या बीटा वितरण की आवश्यकता नहीं है, तो आप इन दो चरणों के साथ पूरी तरह से प्लगइन को अक्षम करके अपने डिबग-बिल्ड को सुरक्षित रूप से गति प्रदान कर सकते हैं:

सबसे पहले, इसे अपने ऐप के build.gradle में जोड़ें:

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

इसके बाद, रनटाइम पर क्रैशलाइटिक्स किट को अक्षम करें। अन्यथा, 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

यह समस्या तब भी होती है यदि आप गलती से क्रैशलाईटिक्स बिल्डकॉनफिग को शामिल करते हैं - एंड्रॉइड स्टूडियो / इंटेलीज ऑटो-आयात के साथ करना बहुत आसान है।

मैंने आयात किया था

import com.crashlytics.android.core.BuildConfig;

मेरे खुद के बजाय

import <package_name>.BuildConfig;


4

मेरे लिए यह वजह थी dataBinding = true। फैब्रिक ग्रेडल प्लगइन को १.२१.० तक अपग्रेड करना इस मुद्दे को तय करता है: https://twittercommunity.com/t/fabric-gradle-plugin-1-21-0-add-support-for-android-databinding-true/57th4


महान बिंदु - यह उस त्रुटि का एक और हालिया संस्करण है। 1.21.0 या 1.21.1 का उपयोग करने से मदद मिलेगी।
माइक बॉननेल

3

मेरे मामले में, मैं एक "कॉमनलिब" मॉड्यूल में कपड़े का उपयोग कर रहा था जिसे अन्य सभी मॉड्यूल (ऐप सहित) में एक निर्भरता के रूप में जोड़ा गया था। इसलिए, मैंने ब्लॉक के 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

यदि यह किसी और की मदद करता है, तो मेरे पास एक समान मुद्दा था जब क्रैशेटिक्स को फैब्रिक में अपग्रेड करना। मेरे मामले में, प्लगइन ने क्रैशलाईटिक्स से 2 लाइनें छोड़ीं, जिन्हें काम करने से पहले मुझे मैन्युअल रूप से हटाने की आवश्यकता थी।

बिल्डल डिपेंडेंसी के तहत ग्रेड फ़ाइल में, मुझे मैन्युअल रूप से निकालना पड़ा:

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'

यह अजीब लग सकता है लेकिन इसके परिणामस्वरूप एक ही मुद्दा होगा

यह कपड़े द्वारा डिफ़ॉल्ट रूप से जोड़ा जाता है जब हम साइन अप करते हैं और आईडीई का उपयोग करके फैब्रिक विंडो से कोड जोड़ते हैं लेकिन गलती से इसे हटाया जा सकता है।


0

निर्धारित क्रैश आइकन को हटाएं?

मैंने ऑनबोर्डिंग ट्यूटोरियल के आधार पर नवीनतम संस्करणों का उपयोग करते हुए सब कुछ किया था, आदि।

यह जानने की कोशिश में बस एक घंटा बर्बाद हुआ। यह पता चला है कि किसी ने सोचा था कि एप्लिकेशन आइकन के पैकेज का नाम पढ़ने के बजाय context.packageNameएप्लिकेशन के संसाधनों को एक संदर्भ दिया जाना एक अच्छा विचार था । यह इस विधि में किया गया है:

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

यदि आप किसी ऐसे आइकन का उपयोग करते हैं जो एपीके के अंदर नहीं है, तो यह स्पष्ट रूप से चल रहा है, उदाहरण के लिए android:icon="@android:drawable/sym_def_app_icon":। यह शायद उस समय एक अच्छा विचार था, आश्चर्य है कि वे किस अजीब बग के आसपास काम करने की कोशिश कर रहे थे ?!


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

उस में जोड़ें AndroidManifest.xml


तो समस्या को ठीक करने के लिए आपका समाधान पूरी तरह से क्रैशशेटिक्स को अक्षम करना है?
जेजे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.