关于Xcode8更新的坑

作者: o翻滚的牛宝宝o | 来源:发表于2016-09-19 15:03 被阅读6011次

    前言


    xcode8在9月14日开放下载,抱着满满的热情,我也在第一时间,顶着公司破网下载了5个小时成功体验了一次Xcode8。以往每一次更新总有很多很多坑,这一点我早有觉悟,但是没想到这个坑一踩下去就坑了整整2天
    。下面我就讲讲亲身经历的一些事:

    注释快捷键失效

    一打开界面,第一感觉就是字体变了,好像比xcode7好看多了。那就敲几句代码试试吧。敲着敲着突然发现command + /失效了。。。当时心中一万个草泥马崩腾啊,一开始还以为我的电脑问题,问了下旁边一起更新的同事发现也一样。好吧,这是事实。。然后各种查资料,网上论坛貌似这个问题只会出现在一部电脑上。

    注释无效
    解决方法: 重启下电脑就好了。(试了各种偏方都不行,最后同事重启下电脑告诉我好了。。。。有惊无险)

    插件不能用

    苹果为了避免类似 Xcode Ghost 事件的再次发生,Xcode8 禁用了插件机制,而开放了另一种形式:Source Editor extensions,但是这种形式局限性太大。MakeXcodeGr8Again 只是去除了它的签名,这样使得 Xcode8 也可以继续使用插件了。由于签名被移除,所以它的安全性又重回 Xcode7 时代,也就是还有可能受到类似 Xcode Ghost 的攻击。所以不推荐用 XcodeGr8 来提交应用到 Appstore。Use at your own risk.

    xcode版本升级插件不能用这个是很正常的事,但是我按以前的方式修改插件的plist文件加DVTPlugInCompatibilityUUID后,发现还是不能用。。于是问题就严重了。。没了ESJsonformat以后生成Json转Model要一个一个手敲啊。看了一眼新的接口返回的json心中不寒而栗。。

    我们后台返回字段个数的例子。。

    赶紧找找办法抢救下。

    解决办法:使用XcodeGr8,参考文章,但是这个办法不敢上传到Appstore,所有并没有完美解决。

    CocoaPods pod trunk push 出错

    之所以坑了2天,其实有大部分时间都在解决这个坑。在更新之前,我写了个NMPageViewController,但是在0.0.4版本中不小心写了个bug,本想在Xcode8升级后再推个0.0.5补救下,原本很简单只要一个pod trunk push命令就推上去了,但是各种奇葩问题都来了。首先是报错simulator iphone 4s is not available.这个可以理解,xcode8去掉4s模拟器,编译出错理所当然,可能是CocoaPods不是最新版吧。于是用命令sudo gem install cocoapods --pre经过漫长的等待升级到bate版。然后还是报simulator iphone 4s is not available.好吧,毕竟是第一天发布Xcode8正式版,CocoaPods没反应过来也正常,我自己下模拟器。

    下载ios9.3模拟器
    又和公司的破网斗争了几个小时之后,成功下载到了4s模拟器。然后继续trunk push,又报错: 再次报错

    让我在验证期间用/Users/nuomi/.cocoapods/repos/master代替/Users/nuomi/NMKit/NMPageViewController/lib.是什么鬼?网上搜了半天找不到啊。。。于是我改改代码,提交下git到github又发现问题了:

    gitpush
    我提交到自己的git库关https://github.com/CocoaPods/Specs.git什么事?于是看了下本地.git文件。 git config

    我惊奇的发现我的库地址被改了。。。(事后多次尝试发现是trunk push修改的)有话好好说,你动不动就改我地址干嘛。突然想起前面报错提示:在验证期间要临时修改下。那我就忍忍呗,再pod trunk push。刚才的错误不见了,有来了新的:

    新错误
    我的项目明明叫NMPageViewControllerDemo.xcworkspace你找App.xcworkspace肯定找不到啊。这里我已经想到,估计CocoaPods还没兼容Xcode8,我记得我的笔记本还是Xcode7,先用笔记本传代码解决燃眉之急。
    结果Xcode7编译不了了,显示: Xcode7编译出错

    网上都说删除xib源码中的<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>,我试了试,Xcode7直接闪退。。。心中再一次一万只草泥马崩腾。

    正确的打开方式是:打开公司电脑,用Xcode8打开xib按下图修改

    修改为Xcode 7.x

    然后上传到git,然后笔记本从git拉下来,再编译。

    然后pod trunk push,然后一切都是熟悉的感觉。。

    Paste_Image.png

    灵异事件

    升级Xcode8后,有一个xib的图片显示不出来。看了下这个图片的约束感觉没有什么问题,而且其他cell的图片都能显示出来,就这个cell不行。

    奇怪的图片

    后来在IOS9系统的手机上尝试是能出现的,在IOS10中不显示,不知道是IOS10的问题还是Xcode8的问题。由于就这么一个xib出错,也没深究,重新生成一个xib继续用。

    ps:今天找到原因了,因为xcode8从xib上拿到的view frame的height和width都是1000,而我设了个圆角是height/2。也就是说我设了一个500的圆角,因此图片不显示了!

    其他实用的变化tip

    这篇文章已经总结的很好了,因此不再累述。文章地址:http://www.jianshu.com/p/0cc7aad638d9

    总结


    本来只想写技术文章,不想吐槽什么,但是这次经历真的让人不吐不快。。苹果大大还是任性啊。
    总结一句话:

    升级有风险,更新需谨慎。

    相关文章

      网友评论

      • 一1二2三3:view frame的height和width都是1000 这个问题到底是怎么产生的那? 我这边需要使用frame来计算cell的高度 现在height和width获取不到 高度没法算了
        o翻滚的牛宝宝o:不知道,可能ios内部实现机制改变了吧。cell计算高度?纯代码的话不用frame计算吧,用约束的话就更不用frame了。可以考虑换其他方法计算cell高度了。如果代码多不想改可以先[self layoutsubview],然后再看看能不能拿到frame,只是个建议不一定有用。
      • 温暖的弦Y:我今天也遇到了,诡异,很多地方这样,但是运行是正常的,xib显示老是空
      • 尧阿尧尧到外婆桥:楼主,ios10之后网络协议协议说是有新的改动,把https转http好像多了一个参数控制,能讲解下吗
      • 熹微_____:请问图片圆角的那个有办法解决吗
        o翻滚的牛宝宝o:可以啊,你设一个定值不就可以了?试试看。
      • feng_dev:但是这个办法不敢上传到Appstore 这句话什么意思?
        feng_dev:@翻滚的牛宝宝o 先不用了,等稳定点再说 :smile:
        o翻滚的牛宝宝o:@Developer_峰 最近参考这个http://www.jianshu.com/p/dc2fc2a680fc 成功用插件了,但是还有上传应用尝试,该文作者说能成功上传,想用插件的话你可以看看。
        o翻滚的牛宝宝o:@Developer_峰 因为那个能用插件的方法是把数字签名去掉了。不知道appstore能不能接受,就怕苹果把你当成Ghost事件把你应用都下架。
      • feng_dev:楼主用过RTImageAssets 吗 。就是一个 生成icon 啊,@2X, @3X 图的一个库
        06f6cfa995d3:只能用@3X生成@2X,否则会糊
        o翻滚的牛宝宝o:@Developer_峰 这个没有。。我们图片是美工直接给的。不过看介绍好像挺好用的。
        feng_dev:@Developer_峰 也是插件
      • XiaoWhite:你好,你说的那个灵异事件我也遇到了,只不过无论是在iOS9,还是iOS10上面,都不显示,不知道你现在有没有解决的方法
        XiaoWhite:@翻滚的牛宝宝o 非常感谢
        o翻滚的牛宝宝o:@XiaoWhite 找到原因了,可以看文章补充
        o翻滚的牛宝宝o:@XiaoWhite 重新写个xib就好了

      本文标题:关于Xcode8更新的坑

      本文链接:https://www.haomeiwen.com/subject/omxnettx.html