HttpServerDebug (HSD)
概述
HSD借助HTTP服务器提供调试工具(如文件系统探索、数据库检查等)。HSD将在您的设备上启动HTTP服务器,您可以通过局域网内的用户代理连接到该服务器。
演示截图
访问HSD
因为HSD作为HTTP服务器在设备上启动,您可以用您的首选网页浏览器像浏览普通网站一样访问它。HSD还提供了一些有用的服务器API,您可以从Documents/
目录中获取这些API的说明。您可以通过几种方法获取HSD主机名。
HSD控制面板
HSD提供了一个控制面板,在那里您可以按照您的方式运行HSD。
公共主机名解析接口
HSF也将控制面板中使用的公共主机名解析接口+[HSDManager resolveHostName:]
公开。您可以调用此方法并在自定义视图中显示主机名。
浏览和查找
如果您静默启动HSF,以下方法是另一种访问HSF的方式。
当HSF启动时,还会发布内置的Bonjour广播_http._tcp
类型服务。您可以在local.
域中浏览_http._tcp
类型服务的实例。当您获得实例名称后,您可以查找要联系的目标主机名。在以下示例中,我们使用dns-sd
工具来浏览和查找目标主机名。
chenjundeMacBook-Pro:~ chenjun$ dns-sd -B _http
Browsing for _http._tcp
DATE: ---Wed 04 Apr 2018---
10:10:14.738 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
10:10:14.738 Add 2 13 local. _http._tcp. 陈军的iPhone 7
chenjundeMacBook-Pro:~ chenjun$ dns-sd -L "陈军的iPhone 7" _http
Lookup 陈军的iPhone 7._http._tcp.local
DATE: ---Wed 04 Apr 2018---
10:10:45.715 ...STARTING...
10:10:45.879 陈军的iPhone\0327._http._tcp.local. can be reached at chenjundeiPhone-7.local.:5555 (interface 13)
手动组装
作为HSF运行在http服务器上,可以使用您的设备的IP地址和HTTP服务器监听端口号来构造完整的URL。
打包
在根目录中,有一个名为"archive.sh"的脚本。切换到根目录,然后执行bash archive.sh
。此脚本将在同一目录的"output"文件夹中生成文件。该"output"文件夹包含三种类型的文件,头文件、库和捆绑包。这些都是必需的文件。
集成HttpServerDebug后,您可能需要在项目中添加libxml2。在"构建相位 -> 链接二进制与库"中添加libxml2。
自定义打包
HttpServerDebug使用了一些第三方库,包括CocoaAsyncSocket、CocoaLumberjack、CocoaHttpServer和FMDB。"archive.sh" 脚本将编译所有源文件并将所有内容集成到一个静态库中,即libHttpServerDebug.a。但有时候如果您已经在项目中引入了某个第三方库,您可能希望排除它。您可以更新"archive.sh"。例如,如果您想移除FMDB,请设置FMDB_INCLUDE=0
。
# Dependencies onfiguration
FMDB_INCLUDE=1
CocoaLumberjack_INCLUDE=1
CocoaAsyncSocket_INCLUDE=1
CocoaHttpServer_INCLUDE=1
常见问题解答
- 为什么Xcode会产生重复符号错误。("在/xxx/libHttpServerDebug.a(xxx.o) /xxx/xxx(xxx.o) 中存在重复符号 xxx,架构 xxx")
当您的项目包含一些相同的类时,链接器会产生这些错误。
由于HttpServerDebug导入了一些第三方库,如果您的项目中已经导入了某个库,那么请如上所述在"archive.sh"中排除它。
- 如何将HttpServerDebug链接到特定配置中?
例如,仅在Debug配置中导入HttpServerDebug。
-
在Debug配置中搜索HttpServerDebug头文件。
- “构建设置 > 头文件搜索路径”,为Debug配置添加头文件搜索路径。
-
在Debug配置中链接二进制文件与库。
-
“构建设置 > 其他链接标志”,为Debug配置添加"-lHttpServerDebug"。
-
“构建设置 > 库搜索路径”,为Debug配置添加libHttpServerDebug.a的搜索路径。
-
-
在Debug配置中复制Bundle资源。
- 在“构建阶段 -> 运行脚本”中添加复制Bundle资源的脚本。
if [ "${CONFIGURATION}" == "Debug" ]; then
cp -r "${PROJECT_DIR}/HttpServerDebug.bundle" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app"
fi