Android运行时如何彻底移除Fabric的Crashlytics、Answers等所有Kit?
如何在运行时彻底移除Fabric的所有Kit
嘿,这个问题我熟!Fabric的API设计其实已经考虑到了这种动态调整Kit的场景,要彻底移除所有已配置的Kit,操作非常直接:
- 只需要在运行时调用
Fabric.with(appContext);即可,注意这里不要传入任何Kit实例。
原理说明
Fabric的with(Context, Kit...)方法每次调用都会替换当前已注册的全部Kit集合:
- 你最初调用
Fabric.with(appContext, new Crashlytics(), new Answers())是把这两个Kit注册进去; - 当你再次调用不带任何Kit参数的
Fabric.with(appContext)时,内部会将已注册的所有Kit清空,相当于完全禁用Fabric的所有功能。
注意事项
- 确保调用时机合适:比如在用户拒绝隐私权限、应用检测到受限制的部署区域等场景下执行这个操作;
- 这个操作是全局生效的,之后如果需要重新启用某些Kit,只需要再次调用
Fabric.with(appContext, 目标Kit实例)即可; - 调用
Fabric.with()的线程没有强制要求,但建议在主线程执行,避免潜在的线程安全问题。
举个实际场景的代码示例:
// 初始化时注册Kit Fabric.with(appContext, new Crashlytics(), new Answers()); // 后续需要移除所有Kit时 if (需要禁用Fabric的条件) { Fabric.with(appContext); }
内容的提问来源于stack exchange,提问作者Gary Kipnis
相关产品推荐
相关产品推荐

