【问题标题】:How do I release a universal swift framework that will submit to the app store?如何发布将提交到应用商店的通用 swift 框架?
【发布时间】:2016-11-03 06:42:15
【问题描述】:

我目前正在开发一个框架,该框架旨在由客户发布和包含以提交到应用商店。

目前,我正在执行以下操作

#!/bin/sh

xcodebuild -target MyFramework -sdk iphoneos -configuration Release clean build

xcodebuild -target MyFramework -sdk iphonesimulator -configuration Release clean build

mkdir build/Release-iphoneuniversal

cp -R build/Release-iphoneos/MyFramework.framework build/Release-iphoneuniversal/

cp build/Release-iphonesimulator/MyFramework.framework/Modules/CNVRTagManager.swiftmodule/*  build/Release-iphoneuniversal/MyFramework.framework/Modules/CNVRTagManager.swiftmodule/

lipo build/Release-iphoneos/MyFramework.framework/MyFramework build/Release-iphonesimulator/MyFramework.framework/MyFramework -create -output build/Release-iphoneuniversal/MyFramework.framework/MyFramework

这创建了一个很棒的小框架,我可以将它包含在我可以为模拟器或设备构建的项目中。我也可以存档。特别值得注意的是,我添加了自定义构建设置

BITCODE_GENERATION_MODE=bitcode

确保正确包含位代码。

问题?好吧,当我将工作应用提交到应用商店时会发生这种情况。

错误 ITMS-90087:“不支持的架构。CV 的可执行文件 FreeCell.app/Frameworks/MyFramework.framework 包含不受支持的 架构'[x86_64,i386]'。”错误 ITMS-90087:“不支持 架构。 CV的可执行文件 FreeCell.app/Frameworks/MyFramework.framework 包含不受支持的 架构'[x86_64, i386]'。”

错误 ITMS-90209:“无效的段对齐。'CV 处的应用程序二进制文件 FreeCell.app/Frameworks/MyFramework.framework/MyFramework' 确实 没有正确的段对齐。尝试使用 最新的 Xcode 版本。” 错误 ITMS-90209:“无效的段对齐。 'CV 中的应用程序二进制文件 FreeCell.app/Frameworks/CNVRTagManager.framework/MyFramework' 确实 没有正确的段对齐。尝试使用 最新的 Xcode 版本。”

警告 ITMS-90080:“可执行的 'Payload/CV FreeCell.app/Frameworks/MyFramework.framework' 不是职位 独立可执行文件。请确保您的构建设置是 配置为创建 PIE 可执行文件。有关更多信息,请参阅 技术问答 QA1788 - 在 iOS 开发人员库。”警告 ITMS-90080:“可执行文件 'Payload/CV FreeCell.app/Frameworks/MyFramework.framework' 不是 位置无关的可执行文件。请确保您的构建 设置配置为创建 PIE 可执行文件。更多 信息请参阅技术问答 QA1788 - 建立职位 iOS 开发者库中的独立可执行文件。

现在我很想我必须发布一个用于模拟器的框架和一个用于设备的框架。是这样吗?是否有我缺少的资源?

谢谢。

【问题讨论】:

  • 您找到解决此问题的方法了吗?我不想让开发人员在上传之前剥离二进制文件,我不想发布两个版本:模拟器和设备。
  • 很遗憾,它没有帮助我,因为我正在构建的框架使用它自己的框架。除了不使用“子框架”之外,没有其他解决方案

标签: ios xcode swift frameworks universal


【解决方案1】:

最佳实践是创建一个组合框架。一种同时支持设备和模拟器的设备。

此过程通常涉及分别为两种架构构建框架,然后将它们组合在一起。

您也可以为此使用脚本,它会在您构建框架时为您处理合并。

这里的answer 应该会给你更多的指导。

【讨论】:

  • 我认为您错过了问题的重点。 App Store 似乎不接受组合框架。我在问题中包含的脚本将两个框架结合在一起。
  • 但是我确实看到发布一个通用框架并期望最终用户从胖二进制文件中剥离模拟器是可以的。
猜你喜欢
  • 1970-01-01
  • 2021-04-10
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多