others - Android - 如何修复CrashlyticsMissingDependencyException?

我一直在使用最新的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)



时间:

现在唯一的解决方法是,如果你真的需要发布应用程序,就是将动态版本号更改为静态版本号:


[...]



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\'



在实际安装Fabric Crashlytics之前,我添加了以下代码:


debug {


 ext.enableCrashlytics = false


}



第一次运行后问题不再出现。


apply plugin: \'io.fabric\'



如果你没有它,添加它!

似乎将插件版本指定为:


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



指定前一个1.14的主要和次要似乎是稳定的:


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



更新插件后我遇到同样的问题,要解决需要从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" />



如果你在调试期间使用禁用功能,如图所示,


 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{}}下

官方修复源

为调试生成禁用Crashlytics

如果你不需要Crashlytics崩溃报告或调试版本的beta版本,你可以通过以下两个步骤完全禁用插件来安全地加速调试版本:

首先,将这个添加到你的应用程序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);



...