BUGSHOTKit 0.1.0

BUGSHOTKit 0.1.0

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2014年12月

Marco Arment维护。



  • 作者
  • Marco Arment

为开发人员和测试人员设计的iOS内应用错误报告,具备带注解的截图和控制系统日志。由Marco Arment制作。

(简而言之:嵌入式BugshotNSLog()收集,适用于测试版测试。)

只需从应用中的任何位置完成您选择的动作——摇晃、两指向上滑动、三指双击、从屏幕右边滑动等——Bugshot报告窗口就会滑上来

Screenshot

它会自动截取您在应用中看到的任何内容,并包含一个直播的NSLog()控制系统日志 不需要任何依赖。(也与CocoaLumberjack和其他可以将输出发送到标准系统日志的工具兼容,或者您可以手动添加消息。)

点击截图会弹出一个嵌入的Bugshot应用版本:画醒目的橙色箭头和方框进行注释,或模糊掉敏感信息。

点击控制台会弹出一个全屏控制台,这在调试时非常有用,即使您没有提交错误报告也是如此。

点击相应的绿色勾勾,如果您想省略截图或日志,然后简单地撰写一封邮件,其中已经填写并附加了所有相关的信息。

仅限开发与测试版!

BUGSHOTKit是为开发和临时的测试版制作的。 请勿将其发布到App Store构建中。

为了帮助防止意外将BUGSHOTKit包含在您的App Store构建中,我已包括一个有用的私有API调用,它将在提交时立即引发验证失败。如果您无论如何还是发布了,它将尝试在运行时检测App Store构建并禁用自己。

这些保护措施并不能保证。请勿依赖它们。请从您的App Store构建中移除BUGSHOTKit。

设置

确保您不会在App Store构建中构建BUGSHOTKit的最简单方法是与您的调试和临时的测试版链接。为此

  1. 从BugshotKit Xcode项目中构建一个静态库。
  2. 将这个库及其包含的头部文件放在您的项目文件夹中的某个地方。
  3. 确保您的应用构建设置的库搜索路径和头文件搜索路径包含您放置它们的路径。
  4. 在链接器其他标志设置中添加-lBugshotKit,但仅针对于调试和临时的测试版。
  5. 在下面关于BUGSHOTKit导入和调用中使用条件宏(例如“#if defined(DEBUG) || defined(ADHOC)”...

用法

只需从您的 application:didFinishLaunchingWithOptions: 调用 [BugshotKit enableWithNumberOfTouches:...] 即可

#import "BugshotKit.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [BugshotKit enableWithNumberOfTouches:1 performingGestures:BSKInvocationGestureSwipeUp feedbackEmailAddress:@"[email protected]"];
}

就是这样,真的。控制台跟踪立即开始,在下一次运行循环迭代中,它将查找具有 rootViewControllerUIWindow 并附加其手势处理程序(如果有)。

用户摇晃设备时,也可以通过在应用程序代理中用 BSKWindow 替换 UIWindow 来显示 Bugshot。

self.window = [[BSKWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

如果您不想使用手势触发器,可以手动调用它(从按钮等)。

[BugshotKit show];

BugshotKit 的电子邮件包括一个包含 JSON 数据的基本信息的 info.json 文件。

{
  "appName" : "TestBugshotKit",
  "appVersion" : "1.0",
  "systemVersion" : "7.1",
  "deviceModel" : "iPhone6,1"
}

要添加自定义键,使用 [BugshotKit setExtraInfoBlock:] 设置一个返回 NSDictionary 的块,并将它们合并。

要自定义电子邮件主题,使用 [BugshotKit setEmailSubjectBlock:] 设置一个块。它将完整的字典作为参数接收,包括您通过额外信息块添加的任何键,因此您可以进行如下操作

[BugshotKit setExtraInfoBlock:^NSDictionary *{
    return @{
        @"userID" : @(1),
        @"colorScheme" : @"dark"
    };
}];

[BugshotKit setEmailSubjectBlock:^NSString *(NSDictionary *info) {
    return [NSString stringWithFormat:@"Bug report from version %@, user %@", info[@"appVersion"], info[@"userID"]];
}];

许可证

请参阅包含的 LICENSE 文件。(这是 MIT 许可证。)

如果您使用 BugshotKit,请考虑支持我的账单支付项目。

谢谢。

Inconsolata 字体

BugshotKit 包括一个免费的单倍间距编程字体 Inconsolata,该字体在 SIL 开放字体许可证 下发布,以便使控制台外观更佳。

将其添加到您的应用程序资源中即可使用。如果它不存在,BugshotKit 将回退到 Courier New,但控制台的显示效果会更差。