Crashlytics与Proguard一起崩溃 [英] Crashlytics crash with proguard

查看:80
本文介绍了Crashlytics与Proguard一起崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我做了面料在其文档中要求的所有内容:

I did everything that fabric ask in their documentation:

-renamesourcefileattribute SourceFile
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**

但仍然出现此错误:

E/答案:无法提交事件任务 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) 在 java.util.concurrent.ScheduledThreadPoolExecutor.schedule(ScheduledThreadPoolExecutor.java:527) 在 java.util.concurrent.ScheduledThreadPoolExecutor.submit(ScheduledThreadPoolExecutor.java:626) 在 java.util.concurrent.Executors $ DelegatedExecutorService.submit(Executors.java:594) 在 com.crashlytics.android.answers.AnswersEventsHandler.executeAsync(SourceFile:182) 在 com.crashlytics.android.answers.AnswersEventsHandler.processEvent(SourceFile:168) 在 com.crashlytics.android.answers.AnswersEventsHandler.processEventAsync(SourceFile:44) 在 com.crashlytics.android.answers.SessionAnalyticsManager.onLifecycle(SourceFile:128) 在 com.crashlytics.android.answers.AnswersLifecycleCallbacks.onActivityStopped(SourceFile:43) 在io.fabric.sdk.android.c.onActivityStopped(SourceFile:126) 在 android.app.Application.dispatchActivityStopped(Application.java:232) 在android.app.Activity.onStop(Activity.java:1620) 在android.support.v4.app.FragmentActivity.onStop(SourceFile:616) 在android.support.v7.app.AppCompatActivity.onStop(SourceFile: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)

E/Answers: Failed to submit events task java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@d2d2a84 rejected from java.util.concurrent.ScheduledThreadPoolExecutor@6b49897[Shutting down, pool size = 1, active threads = 0, queued tasks = 1, completed tasks = 5] at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2014) at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:794) at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:302) at java.util.concurrent.ScheduledThreadPoolExecutor.schedule(ScheduledThreadPoolExecutor.java:527) at java.util.concurrent.ScheduledThreadPoolExecutor.submit(ScheduledThreadPoolExecutor.java:626) at java.util.concurrent.Executors$DelegatedExecutorService.submit(Executors.java:594) at com.crashlytics.android.answers.AnswersEventsHandler.executeAsync(SourceFile:182) at com.crashlytics.android.answers.AnswersEventsHandler.processEvent(SourceFile:168) at com.crashlytics.android.answers.AnswersEventsHandler.processEventAsync(SourceFile:44) at com.crashlytics.android.answers.SessionAnalyticsManager.onLifecycle(SourceFile:128) at com.crashlytics.android.answers.AnswersLifecycleCallbacks.onActivityStopped(SourceFile:43) at io.fabric.sdk.android.c.onActivityStopped(SourceFile:126) at android.app.Application.dispatchActivityStopped(Application.java:232) at android.app.Activity.onStop(Activity.java:1620) at android.support.v4.app.FragmentActivity.onStop(SourceFile:616) at android.support.v7.app.AppCompatActivity.onStop(SourceFile:172) at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1279) at android.app.Activity.performStop(Activity.java:6395) at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3824) at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3883) at android.app.ActivityThread.-wrap5(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1417) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5461) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

此外: 构建gradle:

In addition: build gradle:

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论坛中打开了问题:
https://twittercommunity.com/t/e -answers-failed-submit-events-task/72921/3

Opened issue in Twitter forum too:
https://twittercommunity.com/t/e-answers-failed-to-submit-events-task/72921/3

推荐答案

最后,我发现了我的问题.我以前没有看到它,但是问题是Thread.UncaughtExceptionHandler.
应该是在初始化Fabric crashlytics之后,而之前只有一行.

Finaly i found my problem. I didn't see it before but, Thread.UncaughtExceptionHandler was the problem.
It should be after the initialization of fabric crashlytics while it was one line before.

我通过以下代码解决了该问题:

I solved it by this code:

   @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);
}

这篇关于Crashlytics与Proguard一起崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆