欺骗Xcode从本机安装Docset

刚才写了获取Xcode文档下载地址,但是在Xcode里还是会提示下载。

这里给出一个可行的解决办法,当然不是最好的办法。最好就是人肉翻墙了:p

想看具体怎么做,可以直接跳到后面的Solution,前面写了一些分析。

回到Xcode Preference的下载界面,先让它下着iOS 8.1的文档。

屏幕快照 2015-01-17 上午9.47.17

然后在终端里

lsof | grep Xcode

于是乎,你会看到一大堆信息(其实就是Xcode打开的文件和端口,在“活动监视器”里也可以看,不过用什么方法看并不是重点)

搜索“dmg”
P.S 这里的配图稍微有点问题,因为我已经安装好了docset,真实的目录类似于
/private/var/folders/l6/mzfygwpj66z3jgy02skqyyq40000gp/T/download-B92A6834-24D1-4F68-9284-A695AEBB2457-51327-00092B1DA42C7B18/download-and-install-cache-dstroot/

dmg

把它的路径复制下来,然后用我们已经下好的dmg去替换。回到Xcode中,下载进度没变。

本以为退出Xcode再打开就会变成“已经下载好,但未安装”的状态,不过一旦退出Xcode,那个临时目录也会被删除,也就是说,Xcode不支持断点续传。

这样一来,我们只能把自己伪装成https://devimages.apple.com.edgekey.net/,让Xcode从本地下载到本地,然后Xcode自己安装。

Solution

先安装Server,然后打开“网站”功能。

(直接用自带的Apache配置也行)

屏幕快照 2015-01-17 上午11.17.03

配置HTTPS的那个服务(443端口)

屏幕快照 2015-01-17 上午11.17.10

打开“站点文件”储存的目录,按照原始URL对应的目录层级,把dmg文件放进去。

屏幕快照 2015-01-17 上午11.17.40

 

接下来修改hosts,添加记录,把https://devimages.apple.com.edgekey.net/指向本地。

127.0.0.1    devimages.apple.com.edgekey.net

然后就可以在Xcode里重新下载iOS 8.1的文档。

不过由于是自签名证书,所以Xcode会有警告

屏幕快照 2015-01-17 上午10.42.05

点“OK”让Xcode继续就行。

如果点了OK,但是Xcode没有开始下载的话,就把刚才的docsets文件夹移动到HTTP(80端口)对应的站点目录中。当然docsets里面的目录层级不变。

然后这时候Xcode应该下得飞快(废话,本机到本机当然快)。安装时间还是一样的。

然后就不会提示下载了。

屏幕快照 2015-01-17 上午11.00.43

附注:
解决Xcode警告

打开“keychain”,然后选择和刚才443端口对应的SSL证书,把“信任”中的“在使用此证书时:”改为“始终信任”即可。

trust

One thought on “欺骗Xcode从本机安装Docset”

Leave a Reply

Your email address will not be published. Required fields are marked *

17 − 1 =