阅读 1185

不升级Xcode, 不升级Mac, 依然能好好Debug iOS13

本文首发于公众号【UC研发效能】

引言

苹果惯例一年一度大升级一次iOS, 会把相关开发工具和系统都升级一遍, 十分蛋疼, 很多时候, 我们还不想升级XCode, 更不想升级系统, 特别是beta版的时候, 同时安装2个XCode, 十分恶心. 对于Mac OS还好, 大部分情况的新版XCode都可以支持到当前主流的系统版本, 如果不是Mac开发者, 基本不用去折腾beta版的Mac.
其实一直以来都有方法, 去使用任何的XCode版本去调试当前XCode版本不支持的iOS系统.

如何做?

使用旧XCode调试新的iOS系统

如果你的Mac插入iPhone后, XCode能正常识别出来, 那就只需要打开这个目录

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

把对应里面没有, 而且你又需要的系统DeviceSupport复制进去即可, 然后重启XCode后, 等XCode生成对应系统的符号表, 即可开始调试.

对应的iOS系统DeviceSupport的文件, 可以到github 找一找

如果XCode识别不到你的机器

你可以下载新的XCode, 解压后, 在 Xcode.app/Contents/Resources/Packages 下能找到MobileDevice.pkg, 直接安装就可以.

什么是DeviceSupport?

可以简单看到DeviceSupport的每个系统版本的文件夹里面, 都只有2个文件, DeveloperDiskImage.dmg和DeveloperDiskImage.dmg.signature.
XCode连接上手机时, 会自动挂载对应的DeviceSupport, 想手动挂载上去也可以通过ideviceimagemounter指定对应的DeviceSupport去挂载, DeviceSupport里面的东西权限非常大, 我们也有想过替换里面的东西, 可是无奈终究还是绕不过dmg的签名, iPhone直接拒绝挂载 /(ㄒoㄒ)/~~ 在历史iOS版本的越狱工具里, 也有大神利用了DeveloperDiskImage的漏洞.

那样DeviceSupport里面是有些什么呢?
如果在Mac下挂载DeveloperDiskImage.dmg后, 可以看到里面是这样的

image.png

iOS挂载DeveloperDiskImage后, LaunchDaemons里面的服务启动时自动加载, Lockdown里面的服务, 则可以通过usbmuxd发消息去调用, 另外里面有很多我们平常熟悉的服务和工具, 有兴趣深挖一下.

MobileDevice.pkg 是干什么的?

使用苹果的PackageMaker查看这个pkg, 可以看到苹果更新的相关的驱动和相关依赖库

image.png

Mac下安装不明来历的pkg是非常危险的..

image.png

关于UC研发效能

研测领域资深专家团队,依托UC十余年移动技术沉淀,全力打造专业的研发效能平台。服务于阿里巴巴100+产品,为团队降低研测成本、提升交付效率,助力产品提升用户体验,让产品交付更好更快更安心。

image.png