Xcode更新至IOS 9 后错误处理

1.obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64

d: -undefined and -bitcode_bundle (Xcode setting ENABLE_BITCODE =YES) cannot be used together clang: error: linker command failed with exit code 1 (use -v to see invocation)

 

这是一个坑爹的问题。

  • Xcode 7默认开启 Bitcode ,如果应用开启 Bitcode,那么其集成的其他第三方库也需要是 Bitcode 编译的包才能真正进行 Bitcode 编译

  • 开启 Bitcode 编译后,编译产生的 .app 体积会变大(中间代码,不是用户下载的包),且 .dSYM 文件不能用来崩溃日志的符号化(用户下载的包是 Apple 服务重新编译产生的,有产生新的符号文件)

  • 通过 Archive 方式上传 AppStore 的包,可以在Xcode的Organizer工具中下载对应安装包的新的符号文件

  • 我们可以在”Build Settings”->”Enable Bitcode”选项中看到:

    用 Xcode 7+ 新建一个 iOS 程序时, bitcode 选项默认是设置为YES的。现在需要改成NO。

 

 Watch 应用必须包含 Bitcode ,iOS不强制,Mac OS不支持。 但最坑的一点是: Xcode7 及以上版本会默认开启 Bitcode 。

 

2. WebView 无法打开网页

iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输。直接造成的情况就是App发请求的时候弹出网络无法连接。解决办法就是在项目的info.plist 文件里加上如下节点:

NSAppTransportSecurity - NSAllowsArbitraryLoads

这个子节点的意思是:是否允许任性的加载?! 设为YES的话就将禁用了AppTransportSecurity转而使用用户自定义的设置,这个问题就解决了。

针对百度的情况可以在info.plist中配置如下,如果网站引用的比较多应该是需要针对每个网站进行配置。

NSAppTransportSecurity,NSExceptionDomains,NSIncludesSubdomains,NSExceptionRequiresForwardSecrecy, NSExceptionAllowInsecureHTTPLoads 写在下面便于复制。

posted @ 2015-10-26 15:55  Shikyoh  阅读(1940)  评论(0编辑  收藏  举报