SpiderMan
Introduction: 🔥崩溃日志手机端显示 ,测试妹妹的最爱,开发哥哥的小棉袄
Tags:
SpiderMan 能为您做的事:
- 在 Android 手机上自动显示闪退崩溃信息,直接分享给相关开发人员!
- 再也不用担心测试妹妹给你重现怎样操作才能触发闪退崩溃的尴尬!
- 再也不用担心产品给你说哪儿哪儿会闪退崩溃,但是又不能场景还原的无奈!
- 再也不用担心某些国产 Rom 禁止异常 log 输出!
- 再也不用担心开发工具异常 log 信息输出时灵时不灵!
| Debug 环境 | Share |
|---|---|
![]() |
![]() |
引入依赖
从v1.1.8开始使用jitpack仓库,记得添加jitpack仓库的引用。
maven { url 'https://jitpack.io' }
在app的build.gradle引入依赖:
def spider_man = "v1.2.3"
方式一
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提供了一些封装好的方法,例如saveTextToFile,parseCrash,自行按需使用。
如果 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内置了两种主题样式light和dark。
| light | dark | custom |
|---|---|---|
![]() |
![]() |
![]() |
所有自定义属性定义在attrs.xml中
- smToolbar:toolbar 的背景色
- smToolbarText:toolb title 的颜色
- smToolbarShareText:分享文字按钮的颜色
- smContentBackground:toolb 下方内容的背景色
- smIdentText:标签名字的颜色
- smDescText:标签描述的颜色
具体可以参考app中的用法。
赞助
如果您觉得SpideMan帮助了您,可选择精准扶贫🙇🙇🙇
您的支持是作者继续努力创作的动力😁😁😁
萌戳下方链接精准扶贫⤵️⤵️⤵️
版本迭代
- v1.2.3: targetSdkVersion 升级到 35,解决 edgeToEdge 的问题
- v1.2.2:fix:init 方法在 no-op callback module 没 public 的问题
- v1.2.0:转发异常信息给其他的
defaultUncaughtExceptionHandler - v1.2.0:解决协程 Crash 异常信息不对的问题
- v1.1.9:增加
crash-callbackmodule,升级 gradle 版本 - v1.1.8:使用
jitpack仓库 - v1.1.7: 自动初始化
- v1.1.6: 解决 view id 重名引发的 bug
- v1.1.5: 增加
cpu-abi,versionCode,versionName输出 - v1.1.4: 切换到 androidx
- v1.1.3: change minSdkVersion to 14
- v1.1.2: 解决 FileProvider file_path 重名 bug(bug 来源 LuckSiege/PictureSelector)
- v1.1.1: 新增直接显示错误页面的方法
SpiderMan.show(Throwable e),优化错误类型 - v1.1.0: 增加自定义界面主题和国际化
- v1.0.9: 增加 appcompat 包冲突解决方案
- v1.0.8: 发现很多小伙伴不会代理异常收集,所以删除了异常回调
- v1.0.7: 删除 spiderman-no-op never-crash,优化报错类型显示
- v1.0.6: 增加 spiderman-no-op
- v1.0.5: 奔溃文本分享美化排版
- v1.0.4: 崩溃输出改为 error 级别
- v1.0.3: 增加 拷贝/分享 崩溃文字/图片信息
- v1.0.2: 重构,新增设备信息
- v1.0.1: 去除 allowBackup,label
- v1.0.0: 首次上传





