Xcode编译iOS command line tool遇到的‘com.apple.product-type.tool‘问题

996.icu LICENSE

  • 问题背景
  • 解决方法
  • 原理探究
  • 总结

问题背景

最近更新到Xcode 11.7,发现用MonkeyDev模版编译Command line tool出错了,错误提示为:unable to resolve product type 'com.apple.product-type.tool' for platform 'iphoneos'。截图如下:

解决方法

网上搜索相关信息,知道有2种方法可以解决这个问题。一是重新安装MonkeyDev越狱开发环境,二是通过官方脚本来添加Xcode对iOS comand line tool的支持

这2种方法本质是一样的。重装越狱环境能解决这个问题,是因为AloneMonkey[^1]使用了官方脚本的部分内容,从而添加了对iOS command line tool的支持。
[^1]: AloneMonkey是MonkeyDev模版的开发者

原理探究

先说下最终的结论,Xcode能够支持iOS command line tool,是通过复制MacOS command line tool中的2个设置来实现的。
接下来一步步进行分析,先看下MonkeyDev越狱开发环境重装的shell脚本,即md-intall,关键内容如下:

再看下官方的perl脚本:


当然,这2个脚本内部都还有一些子函数,感兴趣的可以自行查看。分析后就可以知道:AloneMonkey是根据官方的perl脚本,然后用bash脚本实现的。

总结

一句话总结:Xcode能够支持iOS command line tool,是通过复制MacOS command line tool中的2个设置来实现的。

值得注意的点:如果你是使用官方脚本来添加支持,并且你安装了2个或以上的Xcode,那么记得先切换下Xcode command line tools的生效路径。具体操作是:Xcode -> Preferences -> Locations,见下图(这和终端输入sudo xcode-select -s /yourXcodeFilePath/yourXcode.app效果是一样的):

如果本文对你有帮助,不如请我一罐可乐吧 :beer:
在这里插入图片描述

参考资料

  1. MonkeyDev安装Wiki
  2. Com.apple.product-type.tool解决方法
  3. Install iOSOpenDev with Xcode 7
  4. iOSOpenDev command line tool build error