simplepeng / SpiderMan

🔥🔥🔥 - 崩溃日志手机端显示 ,测试妹妹的最爱,开发哥哥的小棉袄
MIT License
1.29k stars 165 forks source link

SpiderMan

MIT

SpiderMan能为您做的事:

Debug环境 Share
crash_info crash_info_share

引入依赖

v1.1.8开始使用jitpack仓库,记得添加jitpack仓库的引用。

maven { url 'https://jitpack.io' }

appbuild.gradle引入依赖:

def spider_man = "v1.2.0"

方式一

debugImplementation "com.github.simplepeng.SpiderMan:spiderman:${spider_man}"
releaseImplementation "com.github.simplepeng.SpiderMan:spiderman-no-op:${spider_man}"

方式二

implementation "com.github.simplepeng.SpiderMan:spiderman:${spider_man}"

上面方式一debug环境有奔溃信息提示,release环境则没有,方式二都有,但是记得添加混淆。

直接显示错误页面

有时候可能因为一些特殊环境下才会发生的崩溃很难复现,所以我们不得以会将一些代码放到try/catch中运行,这样虽然保证了可以不崩溃,但是当发生崩溃时又会很容易忽略掉错误信息。现在我们可以直接在catch代码块中调用SpiderMan.show(Throwable e)方法,这样就可以直接显示崩溃提示页面。

try {
      String text = null;
      text.toUpperCase();
    } catch (Exception e) {
      SpiderMan.show(e);
}

Crash回调

发生crash时,如果你希望能拿到异常信息,保存到本地或者其他自定义操作,那么你可以使用下面的回调方法。

//回调crash
SpiderMan.setOnCrashListener(new SpiderMan.OnCrashListener() {
    @Override
    public void onCrash(Thread t, Throwable ex) {
        saveCrash(t, ex);
    }
});

SpiderManUtils提供了一些封装好的方法,例如saveTextToFileparseCrash,自行按需使用。

如果release也需要回调,请使用release回调库,从1.1.9开始提供。

releaseImplementation "com.github.simplepeng.SpiderMan:spiderman-callback:${spider_man}"

冲突

androidx

项目已经依赖了androidx.appcompat:appcompat包,如果产生冲突请使用下面的方式依赖。

debugImplementation("com.github.simplepeng.SpiderMan:spiderman:${spider_man}") {
    exclude group: "androidx.appcompat"
}
releaseImplementation("com.github.simplepeng.SpiderMan:spiderman-no-op:${spider_man}") {
    exclude group: "androidx.appcompat"
}

support

项目已经依赖了com.android.support:appcompat-v7包,如果产生冲突请使用下面的方式依赖。

debugImplementation("com.github.simplepeng.SpiderMan:spiderman:${spider_man}") {
    exclude group: "com.android.support"
}

releaseImplementation("com.github.simplepeng.SpiderMan:spiderman-no-op:${spider_man}") {
    exclude group: "com.android.support"
}

混淆

-keep class com.simple.spiderman.** { *; }
-keepnames class com.simple.spiderman.** { *; }
-keep public class * extends android.app.Activity
-keep class * implements Android.os.Parcelable {
    public static final Android.os.Parcelable$Creator *;
}
# support
-keep public class * extends android.support.annotation.** { *; }
-keep public class * extends android.support.v4.content.FileProvider
# androidx
-keep public class * extends androidx.annotation.** { *; }
-keep public class * extends androidx.core.content.FileProvider

自定义界面样式

SpiderMan.setTheme(R.style.SpiderManTheme_Dark);

SpiderMan内置了两种主题样式lightdark

light dark custom

所有自定义属性定义在attrs.xml

具体可以参考app中的用法。

赞助

如果您觉得SpideMan帮助了您,可选择精准扶贫🙇🙇🙇

您的支持是作者继续努力创作的动力😁😁😁

萌戳下方链接精准扶贫⤵️⤵️⤵️

扶贫方式

技术支持Q群:1078185041

版本迭代