Xcode7.0 之后的bug小计

升级Xcode7后遇到启动问题:


问题1

[UIApplication_runWithMainScene:transitionContext:completion:]/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294

原因:
xcode7 在你调用makekeyandavliable显示主窗口之前,必须已经存在rootViewController才可以,不允许先调用方法显示,然后根据条件判断到底添加哪一个rootViewController。

问题2

网络请求报错 the resource could not be loaded because the app transport security policy requires the use of a secure connection

原因:
iOS9引入了新特性App Transport Security (ATS)。详情:App Transport Security (ATS)
新特性要求App内访问的网络必须使用HTTPS协议。意思是Api接口以后必须是HTTPS 但是现在公司的项目使用的是HTTP协议,使用私有加密方式保证数据安全。现在也不能马上改成HTTPS协议传输。
暂时解决办法:

在Info.plist中添加NSAppTransportSecurity类型Dictionary。
在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES

问题3

今天在archive以前的项目的时候,发现如下bug
ld: '.....libBaiduMapApi.a(BMAddrList.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64clang: error: linker command failed with exit code 1 (use -v to see invocation)

原因:
首先我们看看什么是bitcode:
bitcode是被编译程序的一种中间形式的代码。包含bitcode配置的程序将会在App store上被编译和链接。bitcode允许苹果在后期重新优化我们程序的二进制文件,而不需要我们重新提交一个新的版本到App store上。
当时用的三方包libBaiduMapApi,不支持bitcode。而新的xocde7,默认是打开了bitcode编译。

解决方案:
1、如果直接导出百度地图包,找到building-setting,搜索bitcode,把YES改成NO
2、如果是cocoapods引入的地图包,最好更新地图包,百度地图最新SDK已经修复了此bug。

你可能感兴趣的:(Xcode7.0 之后的bug小计)