이 CrashlyticsMissingDependencyException을 어떻게 해결할 수 있습니까?


104

한동안 최신 Crashlytics (Fabric 통합)를 사용하고 있습니다. 하지만 최근에 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를 사용하면 계속해서이 문제를 해결하는 동안 작동합니다.
Mike Bonnell 2015

Android Studio 커플 용 Fabrics를 제거하고 설치하려고합니다. 그의 정신을 되찾기 위해 몇 시간을 다시 시작해야합니다.
로버트

이 링크를 사용하십시오. docs.fabric.io/android/crashlytics/…
Shervin Gharib

답변:


22

현재 유일한 해결 방법은 앱을 게시해야하는 경우 (예 : 저처럼) 동적 버전 번호를 정적 버전으로 변경하는 것입니다.

[...]

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

[...]

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

[...]

편집하다:

Fabric SDK의 업데이트 된 버전이 게시되었습니다. 다음과 같이 줄을 변경하여 얻을 수 있습니다.

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

1
무슨 뜻인지 잘 모르겠지만 두 개의 동일한 maven repos : https://maven.fabric.io/repo그리고https://maven.fabric.io/public
gw0


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 assemble, 두 번째 명령으로 생성 된 apk가 정상적으로 작동합니다.
Hieu Rocker

3
@ThuyTrinh는 dataBinding = true 때문이라고 밝혀졌습니다. Crashlytics 그것에 대한 수정 프로그램을 출시했습니다 twittercommunity.com/t/...
Hieu 로커

1
오늘 패브릭 플러그인을 업데이트했으며이 오류가 발생했습니다. 해결 방법은 도움이되지만 후속 실행에서는 작동하지 않습니다. 그래서이 줄에 주석을 달아야합니다.
Ernest

1
그것은 나를 위해 작동하지 않습니다com.crashlytics.sdk.android:crashlytics:2.6.8@aar
Tas

27

나는 이것을 gradle에서 주석 처리했습니다.

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"로 변경되었습니다.
Thuy Trinh 2015

1
그래, 너가 맞아. 중요합니다. 내 게시물을 업데이트했습니다. 감사합니다.
Sergei K

13

다음과 같이 디버그 중에 비활성화 기능을 사용하는 경우

 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
 }

Android {buildtypes {}}에서


11

Crashlytics의 Mike입니다. 이 동작에 대한 수정 사항이 포함 된 업데이트 버전 (1.15.2)을 오늘 일찍 출시했습니다. 실행하는 경우 :

./gradlew assemble --refresh-dependencies

최신 버전을 가져올 것입니다. 여기에서 수정 사항에 대한 자세한 내용을 볼 수도 있습니다.


1
Crashlytics 자체만으로 Fabric 통합을 사용하지 않고 CrashlyticsMissingDependencyException도 발생합니다. 어떻게 처리 할 수 ​​있습니까?
bogumil

@bogumil build.gradle의 일부를 포함 할 수 있습니까?
Mike Bonnell 2015

2
@MikeB 잠시 후 다시 CrashlyticsMissingDependencyException이 발생합니다. 나는 사용하고있다 : dependency {classpath 'com.android.tools.build:gradle:1.2.3'classpath 'com.crashlytics.tools.gradle : crashlytics-gradle : 1.16.0'} 및 컴파일 'com.crashlytics.android : crashlytics : 1.1.13 '
bogumil

흠, 매우 이상한 @bogumil. 새로 고침 종속성 실행이 도움이됩니까?
Mike Bonnell

@MikeB 도움이되지 않습니다. 또한 support @로 이메일을 보냈으며 필요한 경우 자세한 내용을 전달할 수 있습니다.
bogumil

5

나를 위해 수정 공식 소스에서

디버그 빌드에 Crashlytics 사용 중지

디버그 빌드에 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 파일에서 crashlytics가 비활성화되어 있는지 확인하십시오.

    debug {
        ext.enableCrashlytics = false
    }

대신 사용

    debug {
        ext.enableCrashlytics = true
    }

0

답장하기 늦을 수 있습니다. 그러나 이것은 위의 모든 답변을 제외하고 하나 이상의 이유에서 발생할 수 있습니다.

추가를 놓친 경우

apply plugin:'io.fabric'

이상하게 보일 수 있지만 동일한 문제가 발생합니다.

이것은 우리가 IDE를 사용하여 Fabric 창에서 등록하고 코드를 추가 할 때 기본적으로 Fabric에 의해 추가되지만 실수로 삭제할 수 있습니다.


0

응용 프로그램 아이콘을 제거하면 Crashylitics가 수정되었습니다.

온 보딩 자습서를 기반으로 최신 버전 등을 사용하여 모든 작업을 수행했습니다.

이걸 알아 내려고 한 시간을 낭비했습니다. 누군가 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.