Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A Library helping to avoid App can't start up and Multiple crashes, We can call it StartUp-Protector or SafeMode.

License

NotificationsYou must be signed in to change notification settings

liuzhao2007/StartUp-Protector

Repository files navigation

避免App无法启动以及多次启动崩溃的框架,启动崩溃的最后防线。

一、功能特性

  1. 崩溃检测及分级策略:两次崩溃执行一级安全模式,三次崩溃执行二级安全模式;
  2. 提供自修复能力,可自定义进入安全模式的处理策略;
  3. 提供阻塞进程能力,可执行同步热修复;
  4. 提供详细崩溃信息的获取及崩溃的回调能力;
  5. 可定制崩溃后策略,例如重启的忽略策略;
  6. 提供快速回归的能力;

二、应用场景

主要针对应用启动阶段崩溃,例如接口错误、文件损坏等,可能会发生连续Crash;而即便是有热修复,但Crash发生在热修复之前也是无能为力。因此我们需要一道防线,可以对App进行主动的自修复,同时提供同步的热修复能力;那么任何启动崩溃就都不怕了。

三、集成使用

  • Gradle中配置;
    compile 'com.startup:protector:1.0.1'
  • 初始化;

    • Application中设置;
          Protector.getInstance()            .addTask(new Runnable() {// register Runnable to be executed when firstlevel crash occured.                @Override                public void run() {                    Toast.makeText(getApplicationContext(), "执行注册逻辑", 1).show();                }            })            .addSynchronousTask(new TestProtectorTask())            .addCrashManager(new TestCrashManager())            .setCrashCallBack(new TestCrashCallBack())            .setRestart(false)            .init(ProtectorApp.this);

    备注:框架的注册需要在自定义的UncaughtExceptionHandler之后。

    • 退出应用的时候调用,崩溃的统计(策略触发使用)会更加精确;

          Protector.getInstance().lanuchSucceed();
    • 备注;

         使用addSynchronousTask()添加同步方法时,任务执行完毕不需要阻塞进程时务必要调用onPostExecute()方法,否则进程会一直阻塞;

四、详细说明

方法说明
addTask注册行为在一级安全模式触发;
addSynchronousTask注册阻塞的行为在二级安全模式触发,例如热修复等;
addCrashManagerCrash的管理类,决定是否重启,例如场景重启;
setCrashCallBackCrash的回调,可获取到崩溃的信息,有原始的Throwable以及整理后的Msg;
setRestart设置是否重启,默认为true;true的状态下根据CrashManager最终决定是否重启,false则一定不会重启;
setDebugLog的开关;

五、其它

1、问题;

使用过程可根据Log输出信息观察,tag为protector;

2、测试;

    ProtectorTest.testJavaCrash();// 调用之后,应用就会崩溃;

3、混淆;

如果使用了Proguard,则需要添加以下混淆规则;

    -keep public class com.android.startup.protector.**{*;}    -keep class * implements com.android.startup.protector.iprotector.CrashCallBack{*;}    -keep class * implements com.android.startup.protector.iprotector.CrashManager{*;}    -keep class * extends com.android.startup.protector.iprotector.ProtectorTask{*;}

About

A Library helping to avoid App can't start up and Multiple crashes, We can call it StartUp-Protector or SafeMode.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp