之所以报如上错误,是因为脱离 Xcode 通过手机 debugserver 调试App需要附加相应App的进程,然后手机端 debugserver 中 entitlement.plist 文件缺少该权限的标识。
- 获取Mac上的
debugserver
应用程序 -> Xcode -> 显示包内容 -> ...,找到 DeveloperDiskImage.dmg 这个镜像文件
打开
DeveloperDiskImage.dmg ,找到 /usr/bin/debugserver
-
查看是否包含
task_for_pid标识 将debugserver备份至桌面执行:ldid -e ~/Desktop/debugserver,可以清晰的看到键值对中并无task_for_pid标识。 -
为
debugserver添加task_for_pid权限
执行 touch entitlement.plist 创建plist文件,执行 vi entitlement.plist,复制粘贴如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/ PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.springboard.debugapplications</key>
<true/>
<key>run-unsigned-code</key>
<true/>
<key>get-task-allow</key>
<true/>
<key>task_for_pid-allow</key>
<true/>
</dict>
</plist>
-
替换
debugserver的entitlements.plist文件 执行如下命令:codesign -s - --entitlements entitlement.plist -f debugserver再次查看debugserver的entitlements.plist文件已包含task_for_pid权限。 -
将重签名后的
debugservercopy到手机上 执行如下命令:scp -p 开放的端口号 debugserver root@USB地址:/usr/bin/
此时所有工作就完成,即可脱离xcode进行debug调试。