watchOS 多个构建目标:"Any watchOS Device" 对比 "armv7k, arm64_32"
watchOS Multiple Build Targets: "Any watchOS Device" vs "armv7k, arm64_32"
我有一个针对 watchOS 6 及更高版本的 watchOS-only Xcode 项目,用 SwiftUI 编写,其所有依赖项由 Swift 包管理器处理。我在 Xcode 12 中注意到该项目实际上有 2 个构建目标。
一个标记为“任何 watchOS 设备”,另一个标记为“任何 watchOS 设备(armv7k,arm64_32)”。
顺便说一句,我手动添加了 2 个 Series 3 模拟器来调试一位用户遇到的生产问题。
这两个单独的构建目标之间有什么区别吗?如果是这样,我应该使用哪一个来提交到 App Store 以获得最大兼容性?
Is there any difference between these two separate build targets?
最初,我认为任何 watchOS 设备 将是 64 位的,另一个是 32 位的,但在查看档案后,它们都表明是 arm64。
同样,我在没有添加 Series 3 的情况下看到了这两个构建目标。在比较 xcarchive 文件后,它们似乎是相同的,这加深了神秘感。 ♂️
还找到了这个人,大体上在谈论 CPU 架构:https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/
arm64_32 is a variant of arm64 with 32-bit pointer sizes, used on
Apple Watch Series 4 and later.
回到问题:
which one should I be using for submitting to the App Store for
maximum compatibility?
我会选择不太具体的选项 任何 watchOS 设备,直到您找到选择其他方式的理由。
经过一些研究,我相信我有一个解释。
我有 运行 以下命令来检查各种 ARCHS
构建设置:
xcodebuild -showBuildSettings -workspace MyWorkspace.xcworkspace -scheme Watch -sdk watchos | grep ARCHS
有效目的地列表有只有一个 watchOS 条目:
{ platform:watchOS, id:dvtdevice-DVTiOSDevicePlaceholder-watchos:placeholder, name:Any watchOS Device }
构建设置为:
ARCHS = armv7k arm64_32
ARCHS_STANDARD = armv7k arm64_32
ARCHS_STANDARD_32_BIT = armv7k arm64_32
VALID_ARCHS = arm64_32 armv7k
我认为 Xcode 中的不同目的地是一个 UI 错误,源于 ARCHS_STANDARD
和 VALID_ARCHS
之间的参数顺序不同这一事实。如果您要从命令行构建应用程序,则不会有两种选择。
我有一个针对 watchOS 6 及更高版本的 watchOS-only Xcode 项目,用 SwiftUI 编写,其所有依赖项由 Swift 包管理器处理。我在 Xcode 12 中注意到该项目实际上有 2 个构建目标。
一个标记为“任何 watchOS 设备”,另一个标记为“任何 watchOS 设备(armv7k,arm64_32)”。
顺便说一句,我手动添加了 2 个 Series 3 模拟器来调试一位用户遇到的生产问题。
这两个单独的构建目标之间有什么区别吗?如果是这样,我应该使用哪一个来提交到 App Store 以获得最大兼容性?
Is there any difference between these two separate build targets?
最初,我认为任何 watchOS 设备 将是 64 位的,另一个是 32 位的,但在查看档案后,它们都表明是 arm64。
同样,我在没有添加 Series 3 的情况下看到了这两个构建目标。在比较 xcarchive 文件后,它们似乎是相同的,这加深了神秘感。 ♂️
还找到了这个人,大体上在谈论 CPU 架构:https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/
arm64_32 is a variant of arm64 with 32-bit pointer sizes, used on Apple Watch Series 4 and later.
回到问题:
which one should I be using for submitting to the App Store for maximum compatibility?
我会选择不太具体的选项 任何 watchOS 设备,直到您找到选择其他方式的理由。
经过一些研究,我相信我有一个解释。
我有 运行 以下命令来检查各种 ARCHS
构建设置:
xcodebuild -showBuildSettings -workspace MyWorkspace.xcworkspace -scheme Watch -sdk watchos | grep ARCHS
有效目的地列表有只有一个 watchOS 条目:
{ platform:watchOS, id:dvtdevice-DVTiOSDevicePlaceholder-watchos:placeholder, name:Any watchOS Device }
构建设置为:
ARCHS = armv7k arm64_32
ARCHS_STANDARD = armv7k arm64_32
ARCHS_STANDARD_32_BIT = armv7k arm64_32
VALID_ARCHS = arm64_32 armv7k
我认为 Xcode 中的不同目的地是一个 UI 错误,源于 ARCHS_STANDARD
和 VALID_ARCHS
之间的参数顺序不同这一事实。如果您要从命令行构建应用程序,则不会有两种选择。