Gradle 带proguard的Crashlytics崩溃
我做了fabric在其文档中要求的所有事情:Gradle 带proguard的Crashlytics崩溃,gradle,proguard,crashlytics,android-proguard,twitter-fabric,Gradle,Proguard,Crashlytics,Android Proguard,Twitter Fabric,我做了fabric在其文档中要求的所有事情: -renamesourcefileattribute SourceFile -keepattributes *Annotation* -keepattributes SourceFile,LineNumberTable -keep public class * extends java.lang.Exception -keep class com.crashlytics.** { *; } -dontwarn com.crashlytics.**
-renamesourcefileattribute SourceFile
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
但仍然有这个错误:
E/Answers:未能提交事件任务
java.util.concurrent.RejectedExecutionException:任务
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@d2d2a84
拒绝
java.util.concurrent。ScheduledThreadPoolExecutor@6b49897[关闭
关闭,池大小=1,活动线程=0,排队任务=1,已完成
任务=5]
在
java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2014)
在
java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:794)
在
java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:302)
在
ScheduledThreadPoolExecutor.schedule(ScheduledThreadPoolExecutor.java:527)
在
submit(ScheduledThreadPoolExecutor.java:626)
在
Executors$DelegatedExecutorService.submit(Executors.java:594)
在
com.crashlytics.android.answers.AnswersEventsHandler.executeAsync(源文件:182)
在
com.crashlytics.android.answers.AnswersEventsHandler.processEvent(源文件:168)
在
com.crashlytics.android.answers.AnswersEventsHandler.processEventAsync(源文件:44)
在
com.crashlytics.android.answers.SessionAnalyticsManager.onLifecycle(源文件:128)
在
com.crashlytics.android.answers.answerslifecycallbacks.onActivityStopped(源文件:43)
位于io.fabric.sdk.android.c.onActivityStopped(源文件:126)
在
android.app.Application.dispatchActivityStopped(Application.java:232)
位于android.app.Activity.onStop(Activity.java:1620)
位于android.support.v4.app.FragmentActivity.onStop(源文件:616)
位于android.support.v7.app.AppCompatActivity.onStop(源文件:172)
在
android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1279)
位于android.app.Activity.performStop(Activity.java:6395)
在
android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3824)
在
android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3883)
位于android.app.ActivityThread.-wrap5(ActivityThread.java)
在
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1417)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:148)
位于android.app.ActivityThread.main(ActivityThread.java:5461)
位于java.lang.reflect.Method.invoke(本机方法)
在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
此外:
构建渐变:
dependencies {
// The Fabric Gradle plugin uses an open ended version to react
// quickly to Android tooling updates
classpath 'io.fabric.tools:gradle:1.21.7'
}
compile('com.crashlytics.sdk.android:crashlytics:2.6.2@aar') {
transitive = true;
}
compile('com.crashlytics.sdk.android:answers:1.3.8@aar') {
transitive = true;
}
apply plugin: 'io.fabric'
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles 'proguard-rules.pro'
}
我的活动:
public class BaseActivity extends AppCompatActivity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
Fabric.with(this, new Answers(), new Crashlytics.Builder().core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build());
}
}
Twitter论坛上也有公开的问题:最后我发现了我的问题。我以前没有看到它,但是,
Thread.UncaughtExceptionHandler
是问题所在。它应该是在fabric crashlytics初始化之后,而它是前一行 我用这个密码解决了它:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Order is important!
// First, start Crashlytics
Fabric.with(this, new Answers(), new Crashlytics.Builder().core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build());
// Second, set custom UncaughtExceptionHandler
Thread.UncaughtExceptionHandler mDefaultUEH = Thread.getDefaultUncaughtExceptionHandler();
ExceptionHandler exceptionHandler = new ExceptionHandler(this, mDefaultUEH);
Thread.setDefaultUncaughtExceptionHandler(exceptionHandler);
}
在其他一切都对我有效之后,将UncaughtEexceptionHandler(在我的RxJava示例中)的设置移动到应用程序onCreate的末尾。谢谢