xcode11教程(xcode114)

http://www.itjxue.com  2023-02-17 15:02  来源:未知  点击次数: 

升级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关闭

点击运行

(责任编辑:IT教学网)

更多

推荐XML/XSLT文章