Làm cách nào để khắc phục sự cố CrashlyticsMissingDependencyException này?


104

Tôi đã sử dụng Crashlytics (Tích hợp vải) mới nhất trong một thời gian. Nhưng gần đây tôi đã gặp phải lỗi sập sau do thiếu phụ thuộc mặc dù tôi không thay đổi bất kỳ điều gì về cấu hình Crashlytics.

bất kỳ ý tưởng?

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)

Như đã đề cập trong các câu trả lời bên dưới, chúng tôi đang tìm cách sửa lỗi, nhưng việc sử dụng 1.14.4 sẽ hoạt động trong khi chúng tôi tiếp tục tìm hiểu phần cuối của vấn đề này.
Mike Bonnell,

Tôi chỉ cố gắng gỡ cài đặt và cài đặt thời gian dành cho các cặp vợ chồng của Fabrics cho Android Studio. AS cần phải khởi động lại vài thời gian để lấy lại sự tỉnh táo.
Robert

Câu trả lời:


22

Cách giải quyết duy nhất hiện tại, nếu bạn thực sự cần xuất bản ứng dụng của mình (như tôi), là thay đổi số phiên bản động thành số phiên bản tĩnh:

[...]

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

[...]

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

[...]

BIÊN TẬP:

phiên bản cập nhật của SDK Vải đã được xuất bản; bạn có thể lấy nó bằng cách thay đổi dòng thành sau:

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

1
Tôi không chắc ý bạn là gì, nhưng chúng là hai repo maven giống hệt nhau: https://maven.fabric.io/repohttps://maven.fabric.io/public
gw0


96

Tôi đã thêm các mã sau trước khi thực sự cài đặt Fabric / Crashlytics:

debug {
    ext.enableCrashlytics = false
}

Xóa nó trước lần chạy đầu tiên với Crashlytics đã giải quyết được vấn đề. Sự cố không còn xảy ra sau lần chạy đầu tiên.


2
Tôi đang gặp vấn đề tương tự với 1.20.1 và 2.5.2@aar. Nhưng tôi không thể sử dụng cách giải quyết này trên CI vì không gian làm việc của bản dựng được đặt lại cho mọi bản dựng :(
Hieu Rocker

1
Tôi đang làm việc với các kỹ sư tại Fabric. Các múi giờ khác nhau thật tệ và chúng tôi đã mất gần 2 tuần rồi. Vẫn chưa có giải pháp. Nhưng bạn có thể thử một giải pháp khác trên CI: ./gradlew clean assembly, sau đó ./gradlew assembly, apk được tạo bởi lệnh thứ hai sẽ hoạt động như bình thường.
Hieu Rocker

3
@ThuyTrinh hóa ra là do dataBinding = true. Crashlytics đã tung ra bản vá cho nó: twittercommunity.com/t/...
Hiếu Rocker

1
Đã cập nhật plugin vải ngày hôm nay và gặp lỗi này. Cách giải quyết hữu ích, nhưng nó không hoạt động trong các lần chạy tiếp theo. Vì vậy, tôi phải bình luận dòng này cho chạy.
Ernest

1
Nó không hoạt động với tôi trongcom.crashlytics.sdk.android:crashlytics:2.6.8@aar
Tas

27

Tôi đã nhận xét điều này trong gradle

apply plugin: 'io.fabric'

cần thiết để bỏ ghi chú nó

Hoặc nếu bạn không có nó, hãy thêm nó!


14

Có vẻ như chỉ định phiên bản plugin là:

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

chọn 1.15.1, có vấn đề.

Việc chỉ định chính và phụ cho trước 1.14có vẻ ổn định:

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

13

Tôi đã gặp vấn đề tương tự sau khi cập nhật plugin. để giải quyết cần xóa khỏi AndroidManifest.xml:

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

và thêm vào vải .properties:

apiSecret=API_SECRET_KEY
apiKey=YOUR_SECRET_KEY

CẬP NHẬT:

Bây giờ, bạn phải sử dụng:

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

1
Hướng dẫn tích hợp của họ dường như đã lỗi thời. Có vẻ như không còn cần đến Fabric.properties nữa mà là một <meta-data android:name="io.fabric.ApiKey" android:value="YOUR_API_KEY"/>trong tệp AM. Tên đã được đổi từ "com.crashlytics.ApiKey" thành "io.fainst.ApiKey".
Thùy Trinh

1
Vâng, bạn đúng. Nó quan trọng. Tôi đã cập nhật bài viết của mình. Cảm ơn bạn.
Sergei K

13

Nếu bạn đang sử dụng chức năng vô hiệu hóa trong khi gỡ lỗi như được hiển thị

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

Điều gì xảy ra khi bạn cập nhật phiên bản crashlytics đó là

Fabric.with(this, crashlyticsKit); 

được chuyển sang

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

Vì vậy, hãy đảm bảo thay đổi nó trở lại crashlyticskit. Nếu bạn đang thực hiện đúng cách mà lỗi vẫn xuất hiện thì hãy đảm bảo rằng bạn có

debug {

      ext.enableCrashlytics = false
 }

trong {buildtypes {}} android


11

Mike từ Crashlytics đây. Chúng tôi đã xuất xưởng phiên bản cập nhật - 1.15.2 - sớm hơn hôm nay bao gồm bản sửa lỗi cho hành vi này. Nếu bạn chạy:

./gradlew assemble --refresh-dependencies

sẽ có trong phiên bản mới nhất. Bạn cũng có thể xem thêm chi tiết về bản sửa lỗi tại đây.


1
Tôi không sử dụng tích hợp Vải chỉ bởi chính Crashlytics và tôi cũng nhận được CrashlyticsMissingDependencyException. Làm thế nào tôi có thể đối phó với nó?
bogumil

@bogumil, bạn có thể bao gồm một phần của build.gradle không?
Mike Bonnell

2
@MikeB Sau một thời gian, tôi lại nhận được CrashlyticsMissingDependencyException. Tôi đang sử dụng: dependencies {classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.crashlytics.tools.gradle: crashlytics-gradle: 1.16.0'} và biên dịch 'com.crashlytics.android : crashlytics: 1.1.13 '
bogumil 20/05

Hừm, rất kỳ quặc @bogumil. Chạy phần phụ thuộc làm mới có giúp ích gì không?
Mike Bonnell

@MikeB Nó không giúp được gì. Tôi cũng đã gửi email tới support @ và tôi có thể cung cấp thêm thông tin chi tiết nếu cần.
bogumil

5

Sửa cho tôi Từ nguồn chính thức

Tắt Crashlytics cho các bản dựng gỡ lỗi

Nếu bạn không cần báo cáo sự cố Crashlytics hoặc phân phối beta cho các bản dựng gỡ lỗi, bạn có thể tăng tốc bản dựng gỡ lỗi của mình một cách an toàn bằng cách tắt hoàn toàn plugin bằng hai bước sau:

Trước tiên, hãy thêm cái này vào build.gradle của ứng dụng:

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

Tiếp theo, tắt bộ Crashlytics trong thời gian chạy. Nếu không, bộ công cụ Crashlytics sẽ gặp lỗi sau:

com.crashlytics.android.core.CrashlyticsMissingDependencyException:

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

Bạn có thể vô hiệu hóa bộ công cụ trong thời gian chạy chỉ dành cho các bản dựng gỡ lỗi bằng mã sau:

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

Sự cố cũng xảy ra nếu bạn vô tình đưa vào Crashlytics BuildConfig - rất dễ thực hiện với tự động nhập Android Studio / IntelliJ.

Tôi đã nhập khẩu

import com.crashlytics.android.core.BuildConfig;

Thay vì của riêng tôi

import <package_name>.BuildConfig;



3

Trong trường hợp của tôi, tôi đang sử dụng vải trong mô-đun "CommonLib" đã được thêm vào làm phụ thuộc trong tất cả các mô-đun khác (bao gồm cả ứng dụng). Vì vậy, tôi đã thêm apply plugin: 'io.fabric'sau buildscript {}khối. Vì vậy, tôi đã đặt hai plugin cùng nhau:

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

Và vấn đề đã được giải quyết!


1

Đảm bảo thêm apply plugin: 'io.fabric'vào dự án ứng dụng của bạn build.gradle. Trong trường hợp của tôi, tôi đã có một chung build.gradlevới apply plugin: 'io.fabric'. Di chuyển nó sang dự án ứng dụng đã giải quyết được vấn đề.


0

Trong trường hợp điều này giúp ích cho người khác, tôi đã gặp sự cố tương tự khi nâng cấp Crashlytics lên Fabric. Trong trường hợp của tôi, plugin đã để lại 2 dòng khỏi Crashlytics mà tôi cần xóa theo cách thủ công trước khi nó hoạt động.

Trong tệp gradle, dưới phần phụ thuộc của bản xây dựng, tôi phải xóa thủ công:

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

Ngoài ra, trong phần phụ thuộc, tôi phải xóa thủ công:

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

0

Kiểm tra xem crashlytics có bị tắt trong tệp build.gradle không

    debug {
        ext.enableCrashlytics = false
    }

Thay vào đó sử dụng

    debug {
        ext.enableCrashlytics = true
    }

0

Có thể tôi đến muộn để trả lời. Nhưng điều này có thể xảy ra vì một lý do khác ngoài tất cả các câu trả lời ở trên

Nếu bạn bỏ lỡ để thêm

apply plugin:'io.fabric'

Điều này có vẻ lạ nhưng điều này sẽ dẫn đến cùng một vấn đề

Điều này mặc định được thêm vào bởi vải khi chúng ta đăng ký và thêm mã từ cửa sổ Vải bằng IDE nhưng vô tình nó có thể bị xóa.


0

Xóa biểu tượng ứng dụng đã sửa lỗi Crashylitics, bạn ơi?

Tôi đã làm mọi thứ dựa trên hướng dẫn giới thiệu, sử dụng các phiên bản mới nhất, v.v.

Chỉ lãng phí một giờ để cố gắng tìm ra điều này. Hóa ra ai đó nghĩ rằng nên đọc tên gói của biểu tượng ứng dụng thay vì context.packageNamelấy các tài nguyên của ứng dụng cho một ngữ cảnh. Nó được thực hiện theo phương pháp này:

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

Điều này rõ ràng thổi lên nếu bạn tình cờ sử dụng một biểu tượng đó không phải là bên trong apk, ví dụ: android:icon="@android:drawable/sym_def_app_icon". Có lẽ đó là một ý kiến ​​hay vào thời điểm đó, tự hỏi họ đang cố gắng giải quyết lỗi kỳ lạ nào ?!


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

Thêm điều đó vào AndroidManifest.xml.


Vì vậy, giải pháp của bạn để khắc phục sự cố là vô hiệu hóa hoàn toàn Crashlytics?
JJJ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.