如何从 1 个地方在生产版本中记录崩溃报告

Posted

技术标签:

【中文标题】如何从 1 个地方在生产版本中记录崩溃报告【英文标题】:How to log crash reports in Production build from 1 place 【发布时间】:2017-03-27 08:07:09 【问题描述】:

我发现了这个answer,它对我理解场景有很大帮助。但是,如果我的应用程序中有 100 个活动,并且其中任何一个活动都可能发生崩溃,我是否有可能从一个地方记录所有崩溃,而不是在每个活动中编写此代码。

每当应用程序发生崩溃时,我想将stacktrace 保存在某个文件中,并且我想全局执行此操作,而不是进入每个活动。

 @Override
 public void onCreate(Bundle savedInstanceState) 
 super.onCreate(savedInstanceState);

 // Sets the default uncaught exception handler. This handler is invoked
 // in case any Thread dies due to an unhandled exception.
 Thread.setDefaultUncaughtExceptionHandler(new CustomizedExceptionHandler(
 "/mnt/sdcard/"))

;

【问题讨论】:

【参考方案1】:

您可以在 Application 类中执行此操作。

    public class MyDemoApplication extends Application 

        @Override
        public void onCreate() 
            super.onCreate();
            if (!BuildConfig.DEBUG) 
                Thread.setDefaultUncaughtExceptionHandler( <YOUR_CUSTOM_EXCEPTION_HANDLER> );
            

        
    

【讨论】:

以上是关于如何从 1 个地方在生产版本中记录崩溃报告的主要内容,如果未能解决你的问题,请参考以下文章

让忍者从崩溃的地方开始

如何从连接到 Xcode 的设备中理解 ios 崩溃报告?

如何使用iReport将其替换为另一个报告后,在JasperReports Server中恢复旧版本的报告?

如何在 XCode 中查看崩溃报告

Cloudkit 生产记录消失

将 SQLite 从一个地方移动到另一个地方:应用程序崩溃和不兼容的类型