KO
|
EN
gitlite — search
Search
#php
#python
#javascript
#ruby
#hacktoberfest
#vim
#video
#dotfiles
#macos
#plugin
#osdev
#cross-platform
JXCaptain
★ 29
Open GitHub ↗
像美国队长一样威猛的应用调试工具箱!
Download README (.md)
Explore Similar Repositories
EDIT
:
a novel image-to-image translation method
OSX-dark-kde
:
No description available.
MultibootBasicGraphics
:
Very Basic example of Booting with Grub, and requesting a graphics mode with Multiboot
ts-datastore-orm
:
ts-datastore-orm targets to provide a strong typed and structural ORM feature for Datastore (Firestore in Datastore mode).
negar
:
call negar in your python source code and write error log & text log to a file ...
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
JXCaptain
?
Download (.md)
 # JXCaptain 像美国队长一样威猛的应用调试工具箱! # 前言 每个稍有规模的APP都会有一些开发测试功能,比如切换服务器环境、浏览沙盒文件、查看页面帧率以及接口请求日志等。之前项目内部前前后后实现了一些功能,直到看到了滴滴开源的[DoraemonKit](https://github.com/didi/DoraemonKit)。被它完整的功能实现所折服,引入之后真的就拥有了强大的工具集合。在是否要引入`DoraemonKit`之际,我陷入了深深的思考。第一,项目几乎是纯Swift语言开发,并且尽量不再去引用OC的库。第二,内部已经实现了许多功能,稍加改造也能转正为人名服务。所以,就借鉴了`DoraemonKit`的思路和部分代码,重新实现了`JXCaptain`,一个强大的Swift编写的应用调试工具箱。 取名`Captain`队长的含义,就是把一个个功能比喻为战士,队长就是指挥这些战士的精神领袖。有了队长就能所向披靡,战无不胜! # 预览 <div align=center><img src="https://github.com/pujiaxin33/JXExampleImages/blob/master/JXCaptain/JXCaptain.png" width="364" height="761" /></div> # 功能模块 ## 常用工具 - **【App信息】** 快速查看手机信息,App 信息,权限信息的渠道,避免去手机设置查找或者查看项目源代码的麻烦; - **【沙盒浏览】** 沙盒目录浏览,支持图片、视频、sql数据库等文件预览,支持文件的共享; - **【Crash日志】** 捕获Crash,并将日志通过文件形式保存在沙盒里面; - **【H5任意门】** 开始输入H5地址进行网页功能验证; - **【UserDefauls】** 查看`UserDefauls.shared`记录的键值对数据; ## 性能检测 - **【FPS】** 顶部状态栏实时显示当前的帧率; - **【内存】** 顶部状态栏实时显示当前的内存占用; - **【CPU】** 顶部状态栏实时显示当前的CPU使用率; - **【卡顿】** 当页面出现卡顿是,保存当时的堆栈信息,使用`BSBacktraceLogger`获取堆栈信息; - **【流量】** 监听APP和网页的接口调用,查看Header、Response等信息; # 自定义工具 ## 实现`Soldier`协议 ```Swift public class UserDefaultsSoldier: Soldier { public static let shared = UserDefaultsSoldier() //工具列表显示的名字 public var name: String //归属于哪个团队?比如:常用工具、性能检测或者自定义团队名 public var team: String //工具列表显示的icon public var icon: UIImage? //如果你不适用默认的name加icon的显示,直接创建新视图赋值给contentView即可 public var contentView: UIView? //是否监听到了新的事件,比如Crash日志捕获到了新的Crash,将hasNewEvent设置为true,就会显示红点提示 public var hasNewEvent: Bool = false public init() { name = "UserDefaults" team = "常用工具" icon = ImageManager.imageWithName("JXCaptain_icon_app_user_defaults") } //APP启动之后会调用该方法,用于启动当前工具的工作。比如帧率检测,调用prepare之后就开始检测帧率并显示到顶部状态了。 public func prepare() { } //用点击了工具列表的Icon之后,就行页面的调整。一般工具都会有一个进行配置的Dashboard页面 public func action(naviController: UINavigationController) { naviController.pushViewController(UserDefaultsKeyValuesListViewController(defaults: UserDefaults.standard), animated: true) } } ``` ## 添加新的`Soldier` ```Swift Captain.default.enqueueSoldiers([ServerEnvironmentSoldier()]) ``` ## 配置已有的`Soldier` ```Swift Captain.default.configSoldierClosure = { (soldier) in if let websiteEntry = soldier as? WebsiteEntrySoldier { //设置H5任意门默认网址 websiteEntry.defaultWebsite = "https://www.baidu.com" //设置H5任意门自定义落地页面,比如项目有自定义WKWebView、有JS交互逻辑等 websiteEntry.webDetailControllerClosure = { (website) in return UIViewController() } } if let anr = soldier as? ANRSoldier { //设置卡顿时间阈值,单位秒 anr.threshold = 2 } if let crash = soldier as? CrashSoldier { //自定义处理crash信息,可以存储到本地,下次打开app再传送到服务器记录 crash.exceptionReceiveClosure = { (signal, exception, info) in if signal != nil { print("signal crash info:\(info ?? "")") }else if exception != nil { print("exception crash info:\(info ?? "")") } } } } ``` ## 启动工具 ```Swift Captain.default.prepare() ``` # `Captain`的显示与隐藏 可以监听摇一摇、或者在Window上面添加两指连击4次,就显示`Captain`。调用如下代码即可: ```Swift Captain.default.show() ``` 隐藏`Captain`调用如下代码: ```Swift Captain.default.hide() ```