Xcode7.1与iOS9之坑
一、更改http为https
两种方案:
- 公司后台服务器更改;
- 作为开发者,可在Xcode暂时退回到http协议. 开发者更改方法如下:
- 在Info.plist中添加App Transport Security Settings (或NSAppTransportSecurity), 类型Dictionary。
- 在App Transport Security Settings下添加Allow Arbitrary Loads (或NSAllowsArbitraryLoads), 类型Boolean,值设为YES.
二、使用ShareSDK第三方登录或分享,对iOS9适配
可参考官方文档详细介绍: http://wiki.mob.com/ios9-对sharesdk的影响(适配ios-9必读)
包括:https协议支持,关闭bitcode支持,添加Scheme白名单.
3. Xcode7报错:Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:]
从iOS9开始,Xcode7需要所有UIWindow在 makeKeyAndVisible 之前必须有一个rootViewController,否则报以上错误。
解决方案:UIViewController *emptyView = [[UIViewController alloc ] init ];
self. window. rootViewController = emptyView;
[self . window makeKeyAndVisible];
4.Xcode7打开旧项目FrameWork文件夹下的.dylib库缺失,添加方法
项目Target中Link Binary With Libraries 点击下方 “+”添加, 显示搜索页面,在此搜.dylib搜不出来(只能搜到同名的.tbd), 需点击 Add Other,出现文件目录页面 (正常情况通过Finder同样找不到.dylib文件,因该文件是隐藏文件。需按快捷键 CMD+Shift+G,输入 /usr/lib 后进入隐藏界面,然后添加需要的.dylib即可。
5.Xcode7 真机测试,出现"unavailable"字样,Could not find developer disk image
stackoverflower答案: 点击查看
解决方案:
先关闭Xcode.再从Xcode 6.4中,拷贝8.4 (12H141)文件夹到Xcode 7的对应目录下.
Xcode 6.4路径为:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
Xcode 7路径为:
/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
重新打开Xcode 7,打开项目,需要等一会,等到菊花不转了,才能运行。
6.App上传Appstore错误
ERROR ITMS-90049:"This bundle is invalid. The bundle identifier contains disallowed characters. [See the section of the Application Programming Guide entitled The Application Bundle.]"
解决方案:
在项目导航栏搜索Info.plist文件
查找第三方的info.plist文件,如ShareSDK中的腾讯Bundle文件下的Info.plist文件。
在该文件下添加或者修改以下几个字段:
- Bundle version
- Bundle identifier
- Bundle versions string, short
需要和系统自带的Info.plist文件一样。 如下图
7. App上传Appstore错误
“ invalid package Applications built with SDK 9.0 or later must be packaged as proper IPA files. ”
解决方案:
按照错误提示原先上传的是.zip文件,现在需要上传 .ipa文件。也就是需要将打包成的app在打包成ipa文件就可以了。
具体步骤:
1、新建文件夹 Payload
2、将xcode编译好的app放在Payload文件夹中
3、压缩Payload文件夹为 .zip文件,然后重命名为 .ipa 重新上传即可
附快捷shell脚本: 将脚本放在Release-iphones文件夹下,运行该脚本就可将app转换为ipa。
#!/bin/bash
APPNAME="appName"
ZIPNAME="zipName"
IPANAME="ipaName" mkdir ./ipa/Payload
cp -r ./${APPNAME}.app ./ipa/Payload
cd ipa
zip -r ${ZIPNAME} *
mv ${ZIPNAME}.zip ${IPANAME}.ipa
8. App上传Appstore错误
ERROR ITMS-90535 Unexpected CFBundleExecutable Key.
解决方案:
1,用XCode 6.4的Product -> Archive,再提交到AppStore。
2,在Stackoverflow上也有相关的解决办法,就是把无用的CFBundle删除掉。 点击查看
在工程里面搜索info.plist,可以先搜索info,找到第三方的info.plist文件,删除里面的Executable file对应的一整行,包括值。
例如: 找到腾讯的info.plist
删除箭头指向的一行,即可.
9. 未解决问题,哪位大神看到
<1> 真机运行启动时崩溃,并非100%出现,出现率在80%左右,不清楚是什么原因,有知道的解答一下或者给个思路
dyld`gdb_image_notifier:
-> 0x2be590cc < +0 >: bx lr
在网上看到的答案:
选 Project,然后进 BuildPhases,然后进 LinkBinaryWithLibraries. 找到 GLKit.Framework ,把它的 status 更改为 optional 就 ok.(如果没有GLKit.Framework, 添加一个再设置)
因bug无法重现,无法验证以上方法是否可行.
<2>Xcode7.1真机测试启动崩溃,模拟器正常,添加Enable Address Sanitizer调试,崩溃在启动页.
暂时解决办法: 用Xcode 6.3.2运行打包即可.
libclang_rt.asan_ios_dynamic.dylib`__asan::AsanDie:
-> 0x5e8240 <+0>: push {r4, r5, r7, lr} //代码崩溃在此行
0x5e8242 <+2>: add r7, sp, #0x8
0x5e8244 <+4>: dmb ish
打印信息如下:
AddressSanitizer debugger support is active. Memory error breakpoint has been installed and you can now use the 'memory history' command.
==891==Shadow memory range interleaves with an existing memory mapping. ASan cannot proceed correctly. ABORTING.
==891==ASan shadow was supposed to be located in the [0x3ffff000-0x5fffffff] range.
==891==Process memory map follows:
0x3af88000-0x3af89000 /usr/lib/libgcc_s.1.dylib
0x3da44000-0x434ec000 /usr/lib/libgcc_s.1.dylib
0x36556000-0x3655f000 /System/Library/PrivateFrameworks/MobileBluetooth.framework/MobileBluetooth
0x3cf7c000-0x3cf7d000 /System/Library/PrivateFrameworks/MobileBluetooth.framework/MobileBluetooth
0x3da44000-0x434ec000 /System/Library/PrivateFrameworks/MobileBluetooth.framework/MobileBluetooth
0x34a47000-0x34a4e000 /System/Library/PrivateFrameworks/BluetoothManager.framework/BluetoothManager
0x3c671000-0x3c673000 /System/Library/PrivateFrameworks/BluetoothManager.framework/BluetoothManager
0x3da44000-0x434ec000 /System/Library/PrivateFrameworks/BluetoothManager.framework/BluetoothManager
........省略中间部分
0x3b1a3000-0x3b2f5000 /usr/lib/libicucore.A.dylib
0x3d91a000-0x3d92c000 /usr/lib/libicucore.A.dylib
0x3da44000-0x434ec000 /usr/lib/libicucore.A.dylib
0x3b92b000-0x3b9c2000 /usr/lib/libsqlite3.dylib
0x3d977000-0x3d979000 /usr/lib/libsqlite3.dylib
0x3da44000-0x434ec000 /usr/lib/libsqlite3.dylib
0x005b0000-0x00604000 /var/mobile/Applications/D0115D17-C682-41AD-8E5C-D9DA83CF1053/wojsww.app/Frameworks/libclang_rt.asan_ios_dynamic.dylib
0x00604000-0x00a60000 /var/mobile/Applications/D0115D17-C682-41AD-8E5C-D9DA83CF1053/wojsww.app/Frameworks/libclang_rt.asan_ios_dynamic.dylib
0x00a60000-0x00aa0000 /var/mobile/Applications/D0115D17-C682-41AD-8E5C-D9DA83CF1053/wojsww.app/Frameworks/libclang_rt.asan_ios_dynamic.dylib
0x005ad000-0x005ae000 /Library/MobileSubstrate/MobileSubstrate.dylib
0x005ae000-0x005af000 /Library/MobileSubstrate/MobileSubstrate.dylib
0x005af000-0x005b0000 /Library/MobileSubstrate/MobileSubstrate.dylib
0x00010000-0x00014000 /var/mobile/Applications/D0115D17-C682-41AD-8E5C-D9DA83CF1053/wojsww.app/wojsww
0x00014000-0x00370000 /var/mobile/Applications/D0115D17-C682-41AD-8E5C-D9DA83CF1053/wojsww.app/wojsww
0x00370000-0x003f4000 /var/mobile/Applications/D0115D17-C682-41AD-8E5C-D9DA83CF1053/wojsww.app/wojsww
0x003f4000-0x005ac000 /var/mobile/Applications/D0115D17-C682-41AD-8E5C-D9DA83CF1053/wojsww.app/wojsww
==891==End of process memory map.
AddressSanitizer report breakpoint hit. Use 'thread info -s' to get extended information about the report.
菜鸟不知原因,望大神解答.
Xcode7.1与iOS9之坑的更多相关文章
- Xcode7.2与iOS9之坑 (持续更新)
GitHub地址 前几天升级OS X EI Capitan 10.11.1, 以及Xcode7.1,正好赶上公司新产品上线,要做iOS9的适配,遇到各种坑,各种查资料,随之记录总结一下遇到的坑. 先说 ...
- Xcode7打包,iOS9真机闪退,如何解决?
问:有些项目用xcode7打开运行,打包安装到iOS9设备上程序会闪退. 如果用xcode7以下编译,然后打包到iOS9的设备上就是正常的.这是为什么,关键是,怎么解决? 答:iOS9发布之后,有些a ...
- Xcode7.0.1(ios9)的部分适配问题
今天更新了Xcode 7 正式版,App编译出现很多警告,在App运行的时候出现如下的提示......... the resource could not be loaded because the ...
- xcode7下开发ios9等相关问题记录
1.默认使用HTTPS请求如果在Xcode 9之前使用的时http请求,那么在XCode 9上编译的App是不能联网的,会提示如下错误:App Transport Security has block ...
- Xcode7 的两个小坑
Xcode7 还在 beta.时不时崩一下什么的倒也是预料之中的事.没料到的是之前用着好好的,今天升完 El Capitan 之后,模拟器竟然不见了,设备倒是在 schema 栏右边里能看到.只是注明 ...
- Xcode插件管理以及Xcode7 升级
一,Xcode插件管理工具 Alcatraz: mkdir -p ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins; cur ...
- ios9+xcode7 适配笔记
升级了xcode7,最近ios9上马,又到了草泥马的时间,apple开放团队每次系统更新,都是无数个草泥马的适配夜晚,现在ios9上线以前的app竟然启动crash,这是要闹哪样. 1.微信和微博的s ...
- 升级到iOS9之后的相关适配
iOS9AdaptationTips(iOS9开发学习交流群:458884057) iOS9适配系列教程[中文在页面下方]转自@iOS程序犭袁 (截至2015年9月26日共有10篇,后续还将持续更新. ...
- Xcode7推出的新优惠:免证书测试
1.准备 注意:一定要让你的真机设备的系统版本和app的系统版本想对应,如果不对应就会出现一个很常见的问题:could not find developer disk image 2.首先先安装Xco ...
随机推荐
- redis【摘自网上,只为以后查看】
ubuntu安装启动redis 1.下载安装 cd /tmp wget http://redis.googlecode.com/files/redis-2.2.13.tar.gz tar -zxf r ...
- 多重背包的入门题目HDU1171,2191,2844.
首先,什么叫多重背包呢? 大概意思就是:一个背包有V总容量,有N种物品,其价值分别为Val1,Val2--,Val3,体积对应的是Vol1,Vol2,--,Vol3,件数对应Num1,Num2--,N ...
- 24种设计模式--模版方法模式【Template Method Pattern】
周三,9:00,我刚刚坐到位置,打开电脑准备开始干活.“小三,小三,叫一下其它同事,到会议室,开会”老大跑过来吼,带着淫笑.还不等大家坐稳,老大就开讲了,“告诉大家一个好消息,昨天终于把牛叉模型公司的 ...
- 读书笔记之 - javascript 设计模式 - 装饰者模式
本章讨论的是一种为对象增添特性的技术,它并不使用创建新子类这种手段. 装饰者模式可以透明地把对象包装在具有同样接口的另一对象之中,这样一来,你可以给一些方法添加一些行为,然后将方法调用传递给原始对象. ...
- 滑动开关效果 css3滑动开关】纯CSS3代码实现滑动开关效果-css3滑动效果-css3左右滑动
今天看到一篇有关 css3事件的博文,一时兴起便整理下相关的资料. 点击按钮,可以实现开关的滑动效果. 今天看到一篇有关 css3事件的博文,一时兴起便整理下相关的资料. 点击按钮,可以实现开关的滑动 ...
- 基础-函数3(IIFE立即执行函数)
参考链接: http://benalman.com/news/2010/11/immediately-invoked-function-expression/#iife http://segmentf ...
- JavaScript学习总结【9】、DOM Ready
1.DOM DOM(Document Object Model)即文档对象模型,是从文档中抽象出来的,DOM 操作的对象就是文档,DOM 将 HTML 文档呈现为带有元素.属性和文本的树结构,即节点树 ...
- javascript动态添加效果
<script type="text/javascript"> window.onload=function(){ $("#ch").click(f ...
- 结合rpyc使用python实现动态升级的方法
动态升级,就是程序不退出的情况下,将其代码更新的策略.假设集群含有多个机器,然后每个机器部署一套程序,当升级的时候就要去所有的上面部署一把. (1)有个包装程序专门负责接口并检查是否需要更新,当需要更 ...
- Xcode 插件开发
我最近一年来都在开发ios应用,不过感觉公司的app维护起来非常麻烦. 因为公司要为很多个企业订做app,每个app的功能基本相同,只是界面上的一些图片和文字要换掉,功能也有一些小改动.考虑到代码维护 ...