Xcode 12为模拟器建立目标的顺序错误?

如何解决Xcode 12为模拟器建立目标的顺序错误?

我的项目始终在使用Xcode 11的所有设备上正常运行,但是在安装Xcode 12 beta 4之后,它无法在模拟器上构建。

我比较了Xcode 11和Xcode 12的构建日志,在Xcode 12中似乎我的主要目标是在可可豆荚目标之前建立的,因此该链接将失败,因为找不到可可脂类库。

如何确定构建目标的顺序?

在Xcode 11中,一切都很好。 我自己的目标是在可可足目标之后建立的。

enter image description here

在Xcode 12中,构建不正常我自己的目标是在可可足目标之前构建的。

enter image description here

解决方法

好的,我有一个使构建工作正常的解决方案(这种解决问题的方法不正确,在我的更新中添加了正确的修复方法)

1,您需要将Pods项目作为外部项目添加到主项目中

2在主项目的构建阶段中显式添加所有cocodpods目标作为依赖项

但是我仍然认为xcode 12的新beta版将解决此问题。因为它似乎是xcode 12的错误(我的项目在xcode 11和xcode 12 + ios设备中运行完美,仅在xcode 12 +模拟器中失败)

### 2020-08-17更新###

我找到了一个更确切的原因来重现此问题,似乎我在xcode 12中打开的项目文件将在User-Defines中自动生成VALID_ARCHS宏,并且此宏将使构建失败

enter image description here

我发现,有了这个宏,在建筑物的LINK期间,链接目标类型将是未知类型 ' arm64-apple-ios11.0-simulator ' 这会导致构建失败,并且所有目标似乎都以错误的顺序构建的问题只会在添加此宏后才会发生

XcodeDefault.xctoolchain/usr/bin/clang -target arm64-apple-ios11.0-simulator 

删除此VALID_ARCHS宏后,链接目标类型将为' x86_64-apple-ios11.0-simulator ',一切正常

XcodeDefault.xctoolchain/usr/bin/clang -target x86_64-apple-ios11.0-simulator 

#### 2020-09-11 add添加有关此宏的Apple反馈####

更新苹果对VALID_ARCHS的反馈
  • 查看您的反馈后,我们还有一些其他信息 为您:

  • Xcode不会将VALID_ARCHS添加到您的项目中。确实,我们建议 反对使用VALID_ARCHS。也许某些CocoaPod正在将其设置在您的 项目出于某种原因? CocoaPods不属于Xcode,所以我们不 对他们的工作有任何控制权。

    要注意的一件事是,在Xcode 11中,VALID_ARCHS显示在 架构部分。由于我们强烈建议您反对 使用它,它不再在那里显示,现在显示在用户中 定义的部分(如果已定义)。

  • Xcode 11用于自动翻译arm64的构建 模拟器已构建为x86_64,但现在arm64是有效的 模拟器架构(这是Apple Silicon架构), 翻译不再发生。

  • 因此,我们怀疑您应该从您的帐户中删除VALID_ARCHS 项目,并确保将架构(ARCHS)设置为 标准体系结构(ARCHS_STANDARD)而非特定内容 (除非您确切地知道为什么不使用ARCHS_STANDARD)。

####反馈结束####

#### 2020-10-10添加####

在删除某些人的VALID_ARCHS宏后,该版本可能仍无法正常工作,您可以在下面查看添加的Apple反馈的答案和@Andrei Herford的答案:

确保将架构(ARCHS)设置为标准架构 (ARCHS_STANDARD)

然后删除宏,希望这两个步骤对所有用户都有效:)

#### 2020-10-10添加结束####

,

不仅在体系结构设置中为$(ARCHS_STANDARD)使用了ARCHS,而且在VALID_ARCHS中使用了Command PhaseScriptExecution failed with a nonzero exit code,我也可以在模拟器和设备中解决问题也一样我不确定以这种方式改变牙弓会产生什么副作用,但是到目前为止,我还没有遇到任何新问题。

enter image description here

详细信息:

@ximmyxiao的出色回答使我走上了正确的轨道。但是,他的解决方案proposalnd(删除VALID_ARCHS)对我不起作用。编译 Pod目标(Pods脚本中的ARCHS[@]: unbound variablearm64)时,这导致了一个新问题。

用VALID_ARCHS中的x86_64代替arm64解决了构建模拟器时的问题。看来x86_64从来不是一个正确的平台,并且Xcode已将其翻译为x86。随着Apple宣布转向ARM处理器,这种翻译不再正确,因此必须使用正确的平台$(ARCHS_STANDARD)

关于Apple VALID_ARCHS,不再使用。但是,构建设备时,此修复程序不起作用。 最终在两种情况下都使用$response = Http::contentType('application/x-www-form-urlencoded') ->withToken($access_token) ->timeout('2000') ->get('https://example /.../...',[ ]);` (针对模拟器和设备)代替了。

对遇到此类问题的其他人很好看。永远不会无聊使用Xcode。...

,

** 对于 XCode 12.4 **

我有带 M1 的 Apple MB Pro 和带 Moya POD 的项目以及许多其他项目。 应用程序在旧的基于英特尔的 macbook 中使用相同版本的 XCode (12.4) 完美构建。 但是对于 M1,它不会编译说:“找不到 Moya”。什么?

它说:“找不到目标'x86_64-apple-ios-simulator'的模块'Moya';找到:arm64,arm64-apple-ios-simulator”。

没有任何建议对我有用。所以对我有帮助的是:

  • (不确定是否有必要):通过 pod install 重新安装所有 pod
  • 清除构建数据
  • 通过 Rosette 启动(在 XCode 应用程序属性 cmd+i 中查看)

在应用程序的项目中:

  • “架构”:添加 x86_64
  • “仅构建主动架构”:是

在“Pods”项目中,冲突的 pod 部分(在我的例子中是 Moya):

  • “仅构建主动架构”:是

然后重建。可能还需要下一次重建。

,

这对我有用。

  1. 从用户定义的设置中删除了 VALID_ARCHS
  2. ARCHS 设置为 $(ARCHS_STANDARD)
  3. 为我的项目创建了一个新的 .xcconfig 文件。 (如果你已经有了,那么你可以跳过这个)
  4. 将这些添加到我的 .xcconfig 文件
EXCLUDED_ARCHS[sdk=iphoneos*] = x86_64
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64

在那之后,我可以为模拟器和设备构建两者。这里的想法是在模拟器上构建时排除 arm64,在设备上构建 x86_64。

,

对于Xcode版本12.1 如果找不到VALID_ARCHS 将** $(ARCHS_STANDARD)x86_64 i386全部添加到 Architectures 中,将解决在模拟器和设备上进行归档的问题。还建议仅在“ ”中添加 Build Active Architecture enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-