小智 38
Swift 5.0-5.1, Xcode 11
打开 Xcode,<your project>,Build Settings,Build Active Architecture Only 并更改为 <NO> 进行调试和发布。架构在标准架构 -$(ARCHS_STANDARD) 中设置/离开,重要的是下一步:
有效架构:armv7、armv7s、arm64、arm64e,在此处添加 x86_64,如果您需要添加 i386 进行调试和发布。(字符串:armv7、armv7s、arm64、arm64e、x86_64)
在您的模拟器列表中选择任何模拟器并构建它。完毕。
我希望它对你有用。
架构描述:
armv64:iPhoneX、iPhone 5s-8、iPad Air — iPad Pro
armv7:iPhone3Gs-5c,iPad WIFI(第四代)
armv6 : iPhone — iPhone3G
-以上如果是真实设备
i386 : 32 位模拟器
x86_64:64 位模拟器
gng*_*zrd 27
这就是我在 Podfile 中所需的全部内容:
post_install do |pi|
pi.pods_project.targets.each do |t|
t.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
end
end
end
Run Code Online (Sandbox Code Playgroud)
Ash*_*kad 23
我添加了两个架构 i386 和 x86_64。并将 Yes 设置为“仅构建活动架构”。它适用于我在每个模拟器设备上构建。
对于 XCode-12,有效架构已移至最底部的 User-Defined 选项下作为 VALID_ARCHS
Dha*_*ani 12
对于配备 M1、XCode 14.3 的 Macbook,在我将目标架构更改为“显示 Rossetta 目标”后,它起作用了
产品 -> 目的地 -> 目的地建筑 -> 显示 Rossetta Architectures
可能这是黑客行为。希望这有助于快速解决这个问题。
Bob*_*oss 10
我在 M1 MacBook 上遇到了这个问题。
为了解决这个问题,我在我的主机应用程序 Podfile 中添加了以下几行:
post_install do |installer_representation|
installer_representation.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
end
end
end
Run Code Online (Sandbox Code Playgroud)
编辑:添加这一行也有助于解决运行时问题:
config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
Run Code Online (Sandbox Code Playgroud)
M A*_*eed 10
对于带有 M1 芯片的 Mac 上的所有 Pod,您需要x86_64-apple-ios-simulator在“构建设置”中添加支持Architectures。所以过程将是这样的:
它将解决这个问题。更多在项目设置中。您可以 Build Active Architectures根据您的要求进行设置。
Was*_*man 10
此时我使用的是xcode 12.5
为此,我在最底部使用 VALID_ARCHS 编辑了用户定义选项
选择目标并进入构建设置
单击加号图标,您将看到
添加VALID_ARCHS和 $(ARCHS_STANDARD) 值
或者您可以使用 -> armv7、armv7s、arm64、arm64e、x86_64、i386
对于带有 Xcode 12 的新 M1 Mac,我遇到了同样的问题。我能够通过在构建设置中设置Build Active Architecture Only = 'Yes'和添加VALID_ARCHS = arm64 armv7 arm64-ios-simulator(本质上排除x86_64和架构)来解决它。x86_64-ios-simulator
请检查您Scheme是否确保运行正确的方案。
然后你应该打开XCode > -Your Main Target- > Build Active Architecture Only并设置“NO”以在所有架构上构建。
选项:
YES - 如果设置为 yes,则 Xcode 将检测连接的设备,并确定架构,并仅在该架构上进行构建。
NO - 如果设置为 no,那么它将建立在所有架构上。
为了解决这个问题,我不得不再次使用xcode 11工具创建一个自定义框架的胖库。
为此,我执行了以下操作:
1)YourCustomFramework为iOS模拟器构建目标,并从桌面上的products文件夹中提取框架。
Xcode??衍生数据 ?您的项目 ?建立??产品??发行版iPhone模拟器
2)构建YourCustomFramework通用iOS设备的目标,并从桌面上的products文件夹中提取框架。
Xcode??衍生数据 ?您的项目 ?建立??产品??释放iphoneos?
3)重命名模拟器生成的框架,YourCustomFramework-sim.framework以便以后可以区分。
4)使用lipo命令将两个二进制文件合并为一个胖二进制文件。(光盘到您的桌面或自定义框架文件所在的位置)
$lipo -create ./YourCustomFramework-sim.framework/YourCustomFramework ./YourCustomFramework.framework/YourCustomFramework -output ./YourCustomFramework
Run Code Online (Sandbox Code Playgroud)
5)复制YourCustomFramework在上述步骤中创建的二进制文件,并将其替换为YourCustomFramework.framework文件夹中的二进制文件。
6)从资料夹
YourCustomFramework-sim.framework/Modules/YourCustomFramework.swiftmodule/
Run Code Online (Sandbox Code Playgroud)
复制所有模块并将其粘贴到
YourCustomFramework.framework/Modules/YourCustomFramework.swiftmodule/
Run Code Online (Sandbox Code Playgroud)
这应该可以解决您的问题。
小智 6
这是因为您的所有库都不能灵活使用 m1 芯片。所以右键单击 xcode,获取信息并勾选以 rosetta 身份打开。打开您的项目,清理并构建。最后,像以前一样运行你的项目:D
该错误意味着您的自定义框架已针对任何 ios 设备(实际设备)构建,并且您正在尝试在正在测试您的应用程序的模拟器上使用此自定义框架。
解决方案非常简单。只需为您想要测试的模拟器(例如 Iphone 13 模拟器)而不是“任何 iOS 设备”重建您的自定义框架。并用新编译的框架替换旧的框架。
| 归档时间: |
|
| 查看次数: |
3457 次 |
| 最近记录: |