iOS 10、Xcode 8 遇到部分问题解决记录
今天把iphone 6 升级到ios10 后,用Xcode 7进行真机调试的时候提示:
Could not find Developer Disk Image
果断准备升级到Xcode 8 。但是想保留Xcode 7,解决方法:
1、打开Finder,进入“应用程序”文件夹,新建一个文件夹命名为“Xcode 7”。 2、将原来的Xcode7程序拖进刚才创建的文件夹。 3、安装Xcode8之前,首先要把系统升级到10.11.6 4、接下来安装Xcode8。为方便以后升级,把Xcode8直接安装在“应用程序”文件夹内。或者直接通过AppStore下载安装。 5、至此,安装完成。打开Launchpad,可以见到有两个Xcode,且都能正常打开。 6、打开xcodeproj文件时,系统会默认使用Xcode8 升级以后出现的各种问题记录如下: 1、升级到Xcode8 后,真机调试,原来的描述文件出问题了(一堆问题,可能每个人的问题不一样,我就不列举了,反正就是有关描述文件的问题) 发现:Deprecated (如下)
然后:Target - General - 勾选 Xcode8 新增的Automatically manage signing ,
进行team选择等
后面:Target - BuildSeting 就可以如下配置:
通过打包测试,完全没有问题。
2. Xcode8 在 Target - General下有个Signing , Xcode新增的Automatically manage signing会自动管理需要的配置文件和证书。我们只需要在Xcode的Account中登录我们的AppleID账号即可,配置证书变得如此简单.
Provisioning Profile 文件选取,已经从Buiid Settings移动到了General中,Buiid Settings中已经标识了 Deprecated(说白了,可以不用弄了),以前添加设备之后需要重新生成描述文件,然后下载安装,很麻烦,现在省事多了。
当然你也可以选择手动管理配置文件,除此之外,如果签名证书有任何问题Xcode都会及时提示你.
3、一切都配置好了以后,真机调试的时候还是出现以下问题:
The certificate used to sign "你的项目名称" has either expired or has been revoked. An updated certificate is required to sign and install the application.
检查一下,没有问题啊,但是就是报这个错误。
解决:
原来测试证书的p12文件安装了好几次,上次的已经失效,影响了真机调试。在钥匙窜中找到那些失效的证书删掉即可。只留一个有效的证书。
4、升级到Xcode8(ios 10),发现在注册remote notification的,获取device token的时候失败了,错误信息为:
no valid 'aps-environment'
entitlement string found for application
原来在Xcode7中,push notifications开关只有一个步骤:将push notifications加入到app id。

但是Xcode8中,打开push notifications开关有两个步骤:
多了一步写entitlements文件的步骤

所以,用Xcode8打开工程后,应该重新打开一次push notification开关,之后entitlements文件中会多出两行:
<key>aps-environment</key>
<string>development</string>
有了这两行之后,才可以正常注册device token。
使用:codesign --display --entitlements :- ./myApp.app
命令,可以看到app文件内的entitlement。
经发现:如果用production证书签名,可以看到:
<key>aps-environment</key>
<string>production</string>
说明苹果在签名过程中,会自动更新aps-environment
字段。
5、IDFA可被用户禁用
iOS10中,用户可以在设置-隐私-广告-限制广告追踪中禁止app读取IDFA,这时app读取到的IDFA就是一串0。
官方文档中这样说:
In iOS 10.0 and later, the value of advertisingIdentifier is all zeroes when the user has limited ad tracking.
6、Info.plist增加权限字段
使用Xcode8构建的app,在使用相册等系统权限时会崩溃。错误信息为:
This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.
官方文档中解释:
Important: To protect user privacy, an iOS app linked on or after iOS 10.0, and which accesses the user’s photo library, must statically declare the intent to do so. Include the NSPhotoLibraryUsageDescription key in your app’s Info.plist file and provide a purpose string for this key. If your app attempts to access the user’s photo library without a corresponding purpose string, your app exits.
必须在Info.plist文件中增加NSPhotoLibraryUsageDescription键,并且填入合适的描述文本
还有很多其他的权限,如相机等,也需要在Info.plist文件中声明,具体可参考官方文档。
有一个坑就是,如果string的值为空,这行权限的声明就会无效,遇到的时候还是崩溃:
<key>NSPhotoLibraryUsageDescription</key>
<string></string>
7、UITableView、UICollectionView生命周期适配
WWDC介绍了UITableView
和UICollectionView
的生命周期在iOS10中发生了改变。
在iOS9及之前,一个UICollectionViewCell
被重用的过程是这样的:
- 一个cell即将出现的屏幕上
- prepareForReuse
- cellForItemAtIndexPath
- willDisplayCell
- ……
- 一个cell完全离开屏幕
- didEndDisplayCell
- 进入reuse queue
但在iOS10中,一个UICollectionViewCell被重用的过程变成了这样:
- 一个cell还没出现在屏幕上
- prepareForReuse
- cellForItemAtIndexPath
- 一个cell即将出现的屏幕上
- ……
- 一个cell完全离开屏幕
- didEndDisplayCell
- 一段时间后再进入reuse queue
所以,iOS10后,cellForItemAtIndexPath
被调用时,并不表示这个cell即将要出现在了屏幕上。还是得老老实实使用willDisplayCell
和didEndDisplayCell
方法。
8、控制台日志不打印问题设置
Edit Scheme -> Run -> Arguments, 在Environment Variables里边添加 OS_ACTIVITY_MODE =disable 添加完后并选中,控制台打印日志不输出。同时取消后,日志打印输出。
iOS 10、Xcode 8 遇到部分问题解决记录的更多相关文章
- iOS 10 版本适配问题收集-b
随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有错误,欢迎指出. 1.系统判断方法失效: 在你的项目中,当需要判断系统版本的话,不要使 ...
- iOS 10 的适配问题
随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有错误,欢迎指出. 1.系统判断方法失效: 在你的项目中,当需要判断系统版本的话,不要使 ...
- iOS 10 的适配问题-b
随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有错误,欢迎指出. 1.系统判断方法失效: 在你的项目中,当需要判断系统版本的话,不要使 ...
- 第二十四篇、iOS 10版本适配
随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有错误,欢迎指出. 1.系统判断方法失效: 在你的项目中,当需要判断系统版本的话,不要使 ...
- iOS 10 新特性 大汇总 及iOS 10 的一些小问题和 xcode 8 的新版本小问题
iOS 10正式版是很值得升级的,特别是那些不打算购买iPhone 7的老用户,毕竟新系统在体验.流畅性上都做了一些升级. 1.开放电话接口 支持垃圾电话提醒 对于使用iPhone的国人来说,这个功能 ...
- 【转1】Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结
Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结 关于 Appium 1.6.3 在Xcode 8, 10.2 的iOS模拟器上的问题很多,本人也差点放弃 ...
- iOS之Xcode 8.0真机调试运行:This ** is running iOS 10.1.1 (14B100), which may not be supported
2016年10月份 苹果升级了iOS系统为10.1,xcode 8.0 运行会提示: This iPhone 5 (Model A1429) is running iOS 10.1.1 (14B100 ...
- iOS工作小技巧及填坑记录
以下是本人在iOS开发工作中使用的一些小技巧,记录一下. 1.使用XXX.pch文件便捷开发+加速Build 在IOS开发的项目中有一个XX_Prefix.pch XX_Prefix.pch:扩展名. ...
- [iOS 10 day by day] Day 1:开发 iMessage 的第三方插件
本文介绍了 iOS 10 的一个重要更新:Messages 应用支持第三方插件了.作者用一个小游戏作为例子,说明了插件开发从建工程开始,到绘制界面.收发消息的全过程. <iOS 10 day b ...
随机推荐
- Docker中部署Kubernetes
Kubernetes为Google开源的容器管理框架,提供了Docker容器的夸主机.集群管理.容器部署.高可用.弹性伸缩等一系列功能:Kubernetes的设计目标包括使容器集群任意时刻都处于用户期 ...
- apache下htaccess不起作用,linux,windows详解
可能出现下面这三种的错误可能性: 第一种:启用 rewrite 和 .htaccess 设置 rewrite设置:找到apache的配置文件httpd.conf文件,找到:#LoadModule re ...
- python3.5批量修改文件名
考虑到要手工修改许多的文件名太费时,而且网上下载的图片大多如下(完全不能满足强迫症) 就用python来代替我们完成这个过程直接贴上代码 #encoding:utf-8 import os def r ...
- C语言文法
C语言文法 源程序 → 外部声明 | 子程序(外部声明) 外部声明 → 函数定义| 函数声明 函数定义 → 类型标识符(复合句) 标识符类型 → 无类型 | 字符型 | 整型 | 浮点型 整型→ ...
- 让div盒子相对父盒子垂直居中的几种方法
div相对于父盒子垂直居中的几种方法,之前在网上看到很多种方法,确实说的很对,也很具体,但是我感觉对于初学者来说,一目了然是最重要的,所以,我把很高深的技巧,和很复杂的css样式都剔除掉,旨在让更多人 ...
- CODE[VS]4633Mz树链剖分练习
Description 给定一棵结点数为n的树,初始点权均为0,有依次q个操作,每次操作有三个参数a,b,c,当a=1时,表示给b号结点到c号结点路径上的所有点(包括b,c,下同)权值都增加1,当a= ...
- 编写轻量ajax组件02-AjaxPro浅析
前言 上一篇介绍了在webform平台实现ajax的一些方式,并且实现一个基类.这一篇我们来看一个开源的组件:ajaxpro.虽然这是一个比较老的组件,不过实现思想和源码还是值得我们学习的.通过上一篇 ...
- Ubuntu安装Hadoop与Spark
更新apt 用 hadoop 用户登录后,我们先更新一下 apt,后续我们使用 apt 安装软件,如果没更新可能有一些软件安装不了.按 ctrl+alt+t 打开终端窗口,执行如下命令: sudo a ...
- 5G系统架构
原文标题:迈向5G之路,颠覆性的5G系统架构? 本文部分图片,资料摘自<迈向5G C-RAN:需求.架构与挑战> 突如一夜春风来,随着Polar码与LDPC码作为5G编码候选方案,通信 ...
- 【教程】CDQ套CDQ——四维偏序问题
前言 上一篇文章已经介绍了简单的CDQ分治,包括经典的二维偏序和三维偏序问题,还有带修改和查询的二维/三维偏序问题.本文讲介绍多重CDQ分治的嵌套,即多维偏序问题. 四维偏序问题 给定N( ...