iOS体系结构与有效体系结构和设置的影响

时间:2014-04-10 02:54:30

标签: ios

我有一个64位就绪的库,所以我从"架构"中删除了arm64。然后我就可以在模拟器中的64位平台上使用该应用程序。 (在我做出改变之前它没有工作。它会崩溃)

当我要为我的应用程序创建存档以发送到商店时,我收到以下错误:

(null): File is universal (3 slices) but does not contain a(n) armv7s slice: /Users/cmuench/Desktop/PHP-Point-Of-Sale-Repos/PHP-Point-Of-Sale-iOS/PHP Point Of Sale/starSDK/StarIO.framework/StarIO file '/Users/cmuench/Desktop/PHP-Point-Of-Sale-Repos/PHP-Point-Of-Sale-iOS/PHP Point Of Sale/starSDK/StarIO.framework/StarIO' for architecture armv7s

我认为这是因为我用于收据打印机的另一个框架不支持armv7s

3个问题:

  1. 为什么它能够在调试环境中工作但在创建存档时失败?我可以让归档工作的唯一方法是从"有效的架构中删除armv7s"

  2. 我的应用程序是否适用于使用armv7s平台的新硬件? (我没有新的硬件)

  3. "架构"之间的区别是什么?和#34;有效架构"在构建设置中?

1 个答案:

答案 0 :(得分:1)

  1. 在模拟器中,架构是i386而不是armv7或armv7s。如果您尝试在具有armv7s芯片的iOS设备中运行调试会话,则只会出现此错误。
  2. 是的,arm64和armv7s将运行armv7二进制文件。
  3. Build Setting Reference描述了所有构建设置。
    • ARCHS(架构):以空格分隔的标识符列表。指定二进制文件所针对的体系结构(ABI,处理器模型)。当此构建设置指定多个体系结构时,生成的二进制文件可能包含每个指定体系结构的对象代码。
    • VALID_ARCHS(有效架构):以空格分隔的标识符列表。指定可以为其构建二进制文件的体系结构。在构建期间,此列表与ARCHS构建设置的值相交;结果列表指定二进制文件可以运行的体系结构。如果生成的体系结构列表为空,则目标不生成二进制文件。