QuincyKit 2.1.9

QuincyKit 2.1.9

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布上次发布2014年12月

未声明 维护。



QuincyKit 2.1.9

  • Andreas Linde
Author: Andreas Linde <[email protected]>

Copyright (c) 2009-2012 Andreas Linde.
All rights reserved.

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

QuincyKit 的主要功能

  • (自动)向开发者数据库发送崩溃报告
  • 允许用户在每个崩溃发生时决定是否发送数据或总是发送
  • 用户可以在设置中提供额外的信息,例如联系用户的电子邮件地址
  • 如果崩溃已知,将在下一个更新中修复,或如果更新已在 Apple 处等待审批,或者更新已可用于安装,则立即给用户反馈

开发者后端的主要功能

  • 管理传入的崩溃日志数据的管理员界面
  • 在数据库中解密崩溃日志的脚本,需要在能够访问 DSYM 文件的 Mac 上运行
  • 自动将崩溃文件分组为最有可能相同的类型
  • 使用简单的模式维护崩溃报告并对它们进行排序。自动知道一个错误发生了多少次,并轻松地在数据库中过滤新出现的错误
  • 为每个崩溃组分配错误修复版本并定义每个版本的状态,这可以用于提供一些用户反馈,例如:问题已修复,带有错误修复的新版本已可用等。

服务器端文件

  • 代码“/server/database_schema.sql”包含所有默认表
  • 代码“/server/crash_v200.php”是 iPhone 应用调用的文件
  • 代码“/server/config.php”包含数据库访问信息
  • 代码“/server/test_setup.php”是一个简单的脚本,用于检查服务器上是否存在必需的所有内容
  • 代码“/server/admin/”包含所有管理脚本
  • 代码“/server/admin/symbolicate.php”需要复制到本地 Mac,并且 URL 需要调整以确保可以访问服务器的脚本

服务器安装

服务器需要至少 PHP 5.2 和一个 MySQL 服务器安装!

  • 将服务器脚本复制到您的 Web 服务器:/server 目录中的所有文件,除了 /server/local 目录的内容
  • 在 Web 服务器的 MySQL 数据库中执行来自 database_schema.sql 的 SQL 语句

服务器数据库配置

  • 调整 /server/CONFIG.PHP 中的设置

    $server = 'your.server.com'; // 数据库服务器主机名 $loginsql = 'database_username'; // 访问数据库的用户名 $passsql = 'database_password'; // 以上用户名的密码 $base = 'database_name'; // 包含以下列出的表的数据库名称

  • 调整 $default_amount_crashes,这定义了每个模式立即列出的事故数量,如果有更多,将在缩短列表末尾的链接后显示

  • 在最后一行调整您本地的时间区域:date_default_timezone_set('Europe/Berlin')(参见 http://de3.php.net/manual/en/timezones.php
  • 如果您不希望服务器只接受您应用程序的数据
    • $acceptallapps 设置为 true
  • 否则
    • 启动网络界面
    • 添加允许的应用程序的包标识符,例如 "de.buzzworks.crashreporterdemo"(这是与您的应用的 info.plist 中使用的相同包标识符字符串!)
  • 通过浏览器调用 test_setup.php 以检查是否已正确设置并可以使用 Push

  • 如果您正在升级旧版本,请首先调用 'migrate.php' 以更新数据库设置

升级到 QUINCYKIT 2.0

  • 将新数据库字段添加到以下表

    apps

      `hockeyappidentifier` text default NULL
    

    crash

      `jailbreak` int(11) unsigned default '0'
    
  • 如果您从早期版本升级,请确保数据库符合 database_schema.sql 中定义的模式。

服务器启用推送通知

  • 注意:推送通知需要服务器 PHP 安装具有 curl 插件!
  • 注意:推送通知是使用 Prowl iPhone 应用和网络服务实现的,您需要该应用程序和 Prowl API 密钥!
  • 调整 /server/CONFIG.PHP 中的设置
    • $push_activated 设置为 true
    • 如果您不希望为每个新的模式发送推送消息,请将 $push_newtype 设置为 false
    • 调整 $notify_amount_group 以确定何时发送推送消息的模式的崩溃发生次数
    • 将最多 5 个用逗号分隔的 Prowl API 密钥添加到 $push_prowlids 中,以在设备上接收推送消息
    • 调整 $notify_default_version,定义是否希望接收为您的应用程序自动创建的新版本的推送消息
  • 如果已激活推送,请检查网络界面上每个应用程序版本的推送设置

设置本地符号化

  • 注意:这些是在使用 Mac OS X 10.6.2 时使用的说明
  • /server/local 内的文件复制到运行至少 Mac OS X 10.6.2 的本地 Intel Mac 本地目录中,该电脑安装了 iPhone SDK 3.x
  • 调整 local/serverconfig.php 中的设置
    • $hostname 设置为运行服务器端部分的服务器主机名,例如 www.crashreporterdemo.com
    • 如果服务器的 /admin/ 目录受到访问限制,请将所需的用户名设置到 $webuser 并将密码设置到 $webpwd
    • 调整访问脚本的路径(将在 $hostname 后附加)
      • $downloadtodosurl = '/admin/actionapi.php?action=getsymbolicationtodo'; // 提供待办列表脚本的路经
      • $getcrashdataurl = '/admin/actionapi.php?action=getlogcrashid&id='; // 提供崩溃日志脚本的路经
      • $updatecrashdataurl = '/admin/crash_update.php'; // 更新崩溃日志脚本的路经
  • /server/local/ 目录中的修改后的 symbolicatecrash.pl 文件设置为可执行: chmod + x symbolicatecrash.pl
  • 将每个版本的 .app 包和 .app.dSYM 包复制到 Mac 的任何目录中。最好给每个版本的目录添加版本号,这样就可以为同一应用程序的多个版本进行符号化。例如

      QuincyDemo_1_0/QuincyDemo.app
      QuincyDemo_1_0/QuincyDemo.app.dSYM
      QuincyDemoBeta_1_1/QuincyDemoBeta.app
      QuincyDemoBeta_1_1/QuincyDemoBeta.app.dSYM
    
  • 测试符号化

    • 从上方将崩溃报告下载到本地目录
    • 运行 symbolicatecrash nameofthecrashlogfile .
    • 如果输出显示函数名称和行号,且对应您的代码和苹果代码,则一切正常且准备就绪,否则存在问题 :(
  • 如果测试成功,尝试执行 php symbolicate.php 这将打印一些可以忽略的错误消息
  • 打开网页界面,检查崩溃日志是否已符号化
  • 如果一切顺利,设置计划任务
  • 重要提示:不要忘记将新的带有 .app.app.dSYM 包的新构建添加到目录中,以确保正确进行符号化。在开始符号化之前,目前无法检查目录中是否有找到包,无论有或没有,结果都将被上传到服务器

IPHONE 项目安装

  • BWQuincyManager.hBWQuincyManager.mQuincy.bundle 包含到您的项目中
  • CrashReporter.framework 包含到您的项目中
  • 将 "-all_load" 标志添加到您的项目构建配置的 "其他链接器标志" 中
  • 将苹果框架 SystemConfiguration.framework 添加到您的项目中
  • 在您的 appDelegate.h 中包含

    #import "BWQuincyManager.h"
    

    并让您的 appDelegate 实现 BWQuincyManagerDelegate 协议

  • 在您的 appDelegate applicationDidFinishLaunching 函数中包含

    [[BWQuincyManager sharedQuincyManager] setSubmissionURL:@"http://yourserver.com/crash_v200.php"];
    
  • 完成。

  • 在测试连接时,如果在发送崩溃日志后服务器端出现错误,错误代码将打印在控制台上。错误代码值列在 BWQuincyManager.h

MAC 项目安装

  • Quincy.framework 包含到您的项目中
  • 在您的 appDelegate.h 中包含

    #import <Quincy/BWQuincyManager.h>
    
  • 在您的 appDelegate.h 中将 BWQuincyManagerDelegate 协议添加到您的 AppDelegate 中

    @interface DemoAppDelegate : NSObject <BWQuincyManagerDelegate> {}
    
  • 在您的 appDelegate 中更改 main 窗口的调用为以下结构

    // this delegate method is required
    - (void) showMainApplicationWindow
    {
        // launch the main app window
        // remember not to automatically show the main window if using NIBs
        [window makeFirstResponder: nil];
        [window makeKeyAndOrderFront:nil];
    }
    
    
    - (void)applicationDidFinishLaunching:(NSNotification *)note
    {
      // Launch the crash reporter task
      [[BWQuincyManager sharedQuincyManager] setSubmissionURL:@"http://yourserver.com/crash_v200.php"];
      [[BWQuincyManager sharedQuincyManager] setDelegate:self];
    }
    
  • 请注意,Mac 版本现在不再符合 Mac App Store Sandbox 的要求!

  • 完成。

分支

分支结构遵循 Vincent Driessen 定义的 git flow 概念:[http://nvie.com/posts/a-successful-git-branching-model/](http://nvie.com/posts/a-successful-git-branching-model/)

  • Master 分支

    主分支,其中 HEAD 的源代码始终反映生产就绪状态。

  • Develop 分支

    将其视为主分支,其中 HEAD 的源代码始终反映则为下一个发布版提供的最新交付的开发更改状态。有些人称这为“集成分支”。

  • Feature 分支

    这些分支用于开发即将推出或将来某个版本的新功能。功能分支的要点是它存在于功能开发期间,但最终将合并到 develop(以将新功能最终添加到即将推出的版本中)或丢弃(在实验不令人满意的情况下)。

  • Release 分支

    这些分支支持新生产版本的准备。通过使用此方法,develop 分支被清除以接收下一个大型版本的特性。

  • Hotfix 分支

    Hotfix 分支与 release 分支非常相似,它们也是为了准备新生产版本而准备的,虽然这次是计划外的。

依赖项

服务器

支持 PHP 5.0+ 和 MySQL 的 Web 服务器。

Mac OS X

需要Max OS X 10.5及以上版本

iOS

需要iOS 4.3及以上版本(从2.1.9版本开始,不再支持armv6架构!)

ARC支持

如果您在启用了自动内存管理(ARC)的项目中包含QuincyKit,则需要将所有QuincyKit源文件的编译器标志设置为-fno-objc-arc。在Xcode中这样做,请转到您的活动目标并选择“构建阶段”标签。在“编译器标志”列中,为QuincyKit的每个源文件设置-fno-objc-arc

鸣谢

以下是使用过的第三方开源库

请随时添加增强功能、修复、更改并提供给社区!

谢谢
Andreas Linde
http://www.andreaslinde.com/ http://www.buzzworks.de/ http://www.hockeyapp.net/