将 pod 添加到 Today 扩展会强制生成通用存档

Posted

技术标签:

【中文标题】将 pod 添加到 Today 扩展会强制生成通用存档【英文标题】:Adding pod to Today extensions forces production of generic archive 【发布时间】:2015-09-25 16:26:22 【问题描述】:

我偶然发现了一个非常奇怪的问题。

在我的一个应用程序中,我使用可可豆荚安装 Alamofire。直到今天,我已经将 Alamofire 添加到我的主要目标中。然而,我随后决定在我拥有的 2 个 Today 扩展中使用 Alamofire。我修改了我的 Podfile 看起来像这样

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target 'target1' do
pod 'Alamofire', '~> 2.0'
end

target 'target2' do
pod 'Alamofire', '~> 2.0'
end

target 'target3' do
pod 'Alamofire', '~> 2.0'
end

在我调试产品时一切正常。我还可以确认 Alamofire 在扩展中正确执行。问题是,每当我归档我的应用程序时,我都会得到通用归档文件,而没有任何项目的特定成员资格。

经过检查,我可以看到 target2.appex(0 字节)和 target3.appex(0 字节)被复制到我存档的 Products 目录中。 Products/Applications/target1.app/Plugins 中也存在正确的版本。我不知道如何解决这个问题。

我已经尝试在我的 Pod 文件中使用 link_with。我也尝试过使用一些构建设置 - 它仍然无法正常工作。

有没有人遇到过这个问题并知道如何解决?

我可以确认当我将 Pod 文件更改为

source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '8.0'
    use_frameworks!

    target 'target1' do
    pod 'Alamofire', '~> 2.0'
    end

    target 'target2' do
    end

    target 'target3' do
    end

创建的存档是正确的。但是,通过这样的设置,我无法在我的扩展中使用 Alamofire...

【问题讨论】:

【参考方案1】:

这似乎是 Cocoapods 和 Xcode 7 的问题。这个线程是最有帮助的:

Invalid archive produced when using "Archive" in Xcode 7 GM (with watchkit extension) #4021

最流行的解决方法是从您的 Today Extension 目标中删除 Copy Pod Resources 阶段(在构建阶段中)。我试过了,可以确认它可以正常工作,并使我在 Today Extension 上使用的 pod 正常工作。

其他流行的建议解决方法是:

使用 CocoaPods 0.39.0.beta.3 并再次运行 pod install 将“Public”标头拖到“Project”,以便每个 Pod 目标中的标头构建阶段。

另见:Archives broken in Xcode 7β6 by containing public pod headers

【讨论】:

以上是关于将 pod 添加到 Today 扩展会强制生成通用存档的主要内容,如果未能解决你的问题,请参考以下文章

为啥在管道代码块中延迟扩展会失败?

使用通知扩展会导致 Cocoapods 出现问题

BitTorrent Multitracker 扩展会导致分裂群吗?

当您在情节提要中“因特性而异”时,为啥此自动布局扩展会失败?

在 ES6 Node.js 中导入“.json”扩展会引发错误

k8s群集之动态扩缩容——HPA