由于种种原因,我们的iOS项目需要直接从xcode8.0编译通过的版本升级到xcode8.3,其间遇到了很多不好处理的问题在此记录。
1. code sign error
这个问题我还不明白产生的原因,但是将cocoapods版本升级到1.2.0以上,ruby版本升级到2.2.1以上之后,重新pod install可以解决。
2. podspec规范
8.2以后的xocde对podspec有了更严格的要求,在pod install时会有错误提示,基本上按照提示补全即可。主要可能缺少的在于source
字段缺失以及description
字段为空。
3. comment编译问题
comment编译问题如图所示,在升级到8.3之后编译会报出大量的类似错误,主要是由于代码注释不规范引起的,之前应该也出现过,不过都还是warning的形式。
在podfile中加入
config.build_settings['CLANG_WARN_DOCUMENTATION_COMMENTS'] = "NO"
选项重新install编译即可。
4. 代码规范问题
前面的问题都解决后,编译时还是有可能出现link错误,可能是由于某些代码不规范造成的,不如下面这个例子:
NS_ENUM(NSUInteger, NVLocalNotiTriggerType){
NVLocalNotiTriggerTypeOnce = 0,
NVLocalNotiTriggerTypeDaily,
NVLocalNotiTriggerTypeWeekly
};
这样定义一个枚举类型可能会引起link错误NVLocalNotiTriggerType duplicated
,改为
typedef NS_ENUM(NSUInteger, NVLocalNotiTriggerType){
NVLocalNotiTriggerTypeOnce = 0,
NVLocalNotiTriggerTypeDaily,
NVLocalNotiTriggerTypeWeekly
};
即可。类似问题还有一些,解决时可以考虑是否换一种写法来试试。
网友评论