我有一个带有多个自定义动态框架的应用程序,这意味着我使用 iOS 8 作为 Xcode 6.2 上的 SDK。我的 Mac 在优胜美地。这些框架有 Swift 源代码和资源。
该应用程序是分布式企业应用程序,因此我只需创建一个 IPA 并通过网页进行内部分发,用户可以在其中下载并安装该应用程序。
该应用程序可在 iPhone 5(iOS 8.1.2)、iPod Touch(iOS 8.2) 和模拟器上安装和运行BUT NOT在 iPhone 6(iOS 8.1.2)上。错误始终是 dyld:未加载库:@rpath/Custom.framework/。每当我删除并重新添加框架以尝试修复它时,就会弹出另一个框架,因为 iPhone 6 上未加载。(为什么!!!)
设置如下:
- @executable_path/框架
- 嵌入内容包含 Swift 代码 - 是
- 嵌入式二进制文件中的框架
- 嵌入式框架
- 将二进制文件与库链接
导致这些问题的原因以及我可以采取哪些措施来确保应用程序在所有设备和 iOS 8 版本上一致运行。
我找到的大多数解决方案都是尝试和错误建议。
直到我阅读了有关架构的内容后,我才停止找出问题的原因。所以它促使我在连接 iPhone 6 的情况下构建框架。我创建了一个具有所有默认值的项目。添加了几个框架,包括 Alamofire。在 iPhone 6 连接时构建它们。生成存档并部署和安装 OTA。安装该应用程序后,它运行没有问题。
我尝试通过针对我的 iPod(MD717ZP/A) 进行构建来确认这一点。我不确定这是否是第五代。首先,我清空了派生数据文件夹,清理了包括框架在内的所有项目。构建并部署应用程序。将其安装在正在运行的 iPod 上。我把它安装在 iPhone 6 上,然后立刻就崩溃了。
我一遍又一遍地尝试相同的过程。针对 iPhone 6 和 iPod 构建,然后安装在两者上。结果证实我需要在 iPhone 6 上构建它,以便该应用程序可以在该设备及更低版本上运行。
请记住,我只是将框架添加到“嵌入式二进制文件”(目标 > 常规 > 嵌入式二进制文件),然后在 iPhone 6 上构建以使其工作。这可能意味着,如果由于某些架构要求您希望它在所有设备上运行,您需要拥有最新的设备。
Update:除了上述知识之外,您可能还想检查“仅构建活动架构” 部分中构建设置标签。这意味着如果设置为“是”,它将基于连接的硬件进行构建,否则它将针对您支持的架构(例如有效架构)进行构建。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)