在 Podfile 中声明架构

Posted

技术标签:

【中文标题】在 Podfile 中声明架构【英文标题】:Declare Architecture in Podfile 【发布时间】:2013-12-16 22:43:51 【问题描述】:

有没有办法将架构包含在 CocoaPods Podfile 中?我正在尝试为 32 位和 64 位构建我的应用程序,但是当我在项目的构建设置中切换到 Standard architectures (including 64-bit) 时,它抱怨我应该让它自动选择架构。这样做会将我的项目恢复为Standard architectures。我感觉 Xcode 这样做是因为 Pods 项目(在我的 Xcworkspace 中)在其架构中不包含 64 位。有没有办法将它添加到Podfile(我假设如果 Pod 自己做会更好)或者我也应该在 Pods 项目中更改它。

我现在的Podfile

xcodeproj 'Nobles/Nobles.xcodeproj'

platform :ios, '7.0'

pod 'Reachability'
pod 'TWTSideMenuViewController'

【问题讨论】:

尝试更新cocoapods 【参考方案1】:

我正在寻找类似问题的答案并找到了这个:

Resolving CocoaPods build error due to targets building for only active architecture

安装 pod 后我总是遇到构建错误,因为默认情况下,CocoaPods 会将您的 pod 配置为仅针对活动架构构建(在调试期间)。

解决方案是将 Pods 项目设置 Build Active Architecture Only 更改为 NO 进行调试。

但是每次运行 pod install 后都进行更改很繁琐(因为您的更改将恢复为 YES)。

正如 msmollin 在 CocoaPods 问题中所建议的,您可以通过以下方式修复:

# Append to your 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'
        end
    end
end

也许这可以帮助你?

【讨论】:

【参考方案2】:

CocoaPods 不能做你想做的事。它可以为您提供不同版本的库,但它不知道该库是如何构建的。

运行 xcrun -sdk iphoneos lipo -info libYourLibraryName.a 以查看它是为哪些架构构建的。

如果这是一个开源库,您可以自己构建它,而不仅仅是链接 .a 文件。如果您无权访问库源,并且 .a 文件不包含 64 位切片,恐怕您不走运。联系开发人员并要求他们构建支持 64 位的库。

【讨论】:

手动将 Pods 项目设置为包含 64 位是否可行? 你是怎么做到的?在 iOS 中,静态库/框架通常作为单个 .a 文件分发,其中包含所有支持架构的切片。如果该库不是为 64 位构建的,我不知道 CocoaPods 可以对此做些什么。 在我的工作区中,我有两个项目(我的主项目和一个名为 Pods 的项目)。在 Pods 项目中有相同的架构设置。我不知道它是否会起作用,但我想值得一试。 就像我说的,如果你有 Pods 项目下库的完整源代码,你可以自己为 64 位架构构建它。 我该怎么做?

以上是关于在 Podfile 中声明架构的主要内容,如果未能解决你的问题,请参考以下文章

在项目目录中找不到“Podfile”

无效的“Podfile”文件

Podfile 中目标内的目标

Podfile文件详解

Podfile.lock 没有那个文件或目录

Alamofire 不能在 podfile 中使用 osx 而不是 ios