xcode11教程(xcode114)
升级Xcode11之后头文件导入问题
在更新 Xcode 11之后,当 import头文件的时候,索引无效,无法联想出正确的文件;其实是只能索引当前文件夹同级目录下的头文件。
解决方法:
修改设置
Xcode - File - Project Settings(有的旧版本是Workspace Settings) - Build System 改为 Legacy Build System
修改完成之后,要先退出项目,重启Xcode,即可生效;
Xcode Build For ios Simulator arm64
前言
将一个老项目由Xcode11升级到Xcode12的时候,在用模拟器编译的时候,报了一个错误,具体如下:
“ld: building for iOS Simulator, but linking in dylib built for iOS, file '/Users/xxxx/Work/Git/xxx/Framework/GoogleCast/GoogleCast.framework/GoogleCast' for architecture arm64”
我使用模拟器编译的,遇到arm64的错误,一开始还是一头雾水啊。于是Google和百度就上了,经过一番查找,基本定位到问题了。
原因
下面翻译一位外国同仁的解释:
Xcode 12实际上是Apple Silicon的垫脚石,但有了这个平台,我们将得到基于arm64的macOS,模拟器也将运行在arm64架构上,而不是目前基于Intel的x86_64架构。
Xcode通常依赖于“Run Destination”来构建它的库/应用程序,所以当一个模拟器被选择为“Run Destination”时,它将为可用的模拟器架构构建应用程序,当一个设备被选择为“Run Destination”时,它将为设备支持的架构构建(arm*)。
xcodebuild,在Xcode 12+ build系统中,arm64是支持Apple Silicon的有效架构。因此,当一个模拟器被选择为运行目标时,它可能会尝试针对基于arm64的模拟器编译/链接你的库/应用程序。所以它在architecture-os-sdk-destination格式中给clang(++)发送了一些-target标志,如arm64-apple-ios13.0-simulator,clang试图构建/链接基于arm64的模拟器,但最终在基于Intel的mac上失败。
但xcodebuild只在发布版本中尝试这个。因为“Build Active Architecture Only (ONLY_ACTIVE_ARCH)”构建设置通常被设置为“No”,仅用于“发布”配置。这意味着xcodebuild将尝试为选定的运行目标构建所有库/应用的架构变体。对于模拟器运行目标,它现在将包括x86_64和arm64,因为arm64在Xcode 12+中也是一个支持Apple Silicon的模拟器架构。
了解原因后,剩下来就是如何解决了。
解决方法
首先看一下Xcode11和Xcode12在Architecture配置这一块的区别:
Xcode11:
Xcode11中有Valid Architectures的配置项。
Xcode12:
在Xcode12中,在Architecture配置组中,用Excluded Architectures代替了Valid Architectures,那么Valid Architectures跑到哪里去了,在User-Defined配置组里面。
我们的目的是能在Xcode12的模拟器上顺利编译,那么可按照下面的步骤修改:
1. 将Build Active Architecture Only配置的debug值改为Yes。如下图。
2. 如果在Xcode11中有Valid Architectures的配置项,那么请在Xcode12的User-Defined配置组里面删除Valid Architectures的配置项,同时在Target上面的Project里面的User-Defined配置组里面同样删除Valid Architectures的配置项,如何删除,选中,敲击键盘的delete就可以了。
3. 将Validate Workspace配置项修改一次,一定要变成黑粗体,默认值是NO,改成Yes就可以,或者再改回NO,反正得折腾一次。见下图。(之前有一篇文章升级Xcode12.3报错提到过这个配置,可参考一下。)
4. 配置完前三步基本就能编译通过了,如果还是报错,请尝试在Excluded Architectures的debug模式下添加arm64,如下图:
经过这几步,基本就能顺利编译通过了,不过别忘了再用真机编译试试哦,别再影响了真机测试。
结束语
个人感觉这个是Xcode12的一个坑了,不过如果所有的项目里面都采用XCFramework,估计这个问题就能屏蔽掉了。
原文链接:
大神在哪里,iOS11 Xcode怎么真机运行
首先先安装Xcode7,并且运行Xcode,点击左上角菜单Xcode - Preferences。
2
点击Accounts,然后点下面的+号,在弹出菜单中点击Add Apple ID。
3
在弹框中输入和密码,普通就行不需要开发者,然后点击Add
4
如果密码正确的话,会显示如下图。Free表示未付费但可调试,双击打开。
5
在打开的列表中选择 iOS Development-点击Create。(一般这个地方xcode都给自己创建好了)
6
如下图所示,然后点击Done关闭
7
点菜单栏上Window-Devices。同时将iPad接到电脑。
8
在iPhone弹出的对话框中选信任,然后出现如下图所示,连上后关闭窗口
9
打开或者新建一个项目,将项目中iOS Deployment Target中改成iPad对应的系统版本
10
选择真机测试(如果为灰色说明版本不对需降低版本)
11
然后点Team。
12
选择刚刚添加的
然后点击Fix Issue
xcode会自动生成Provisioning profiles
点击菜单Xcode - Preferences。
双击进入
选中刚才的项目,右击然后点击Show in Finder。
然后双击,文件会自动安装,回到原处后点击Done关闭
点击菜单Window - Devices。
选择iPad右击,然后点击Show Provisioning Profiles
看到项目后,点击Done关闭
点击运行