无法在 WatchKit 扩展(CocoaPods)中使用 Parse 库

Posted

技术标签:

【中文标题】无法在 WatchKit 扩展(CocoaPods)中使用 Parse 库【英文标题】:Cannot use Parse library in WatchKit Extension (CocoaPods) 【发布时间】:2015-07-01 21:39:59 【问题描述】:

我正在尝试在 WatchKit 扩展中使用 parse。我从一个新项目(objective-c)开始,并通过 CocoaPods 安装了最新的 Parse(1.7.5)。这是我的 Podfile。

# Uncomment this line to define a global platform for your project
platform :ios, '8.3'

target 'WatchBumpTesting' do
        pod 'Parse', '~> 1.7.5'
end

target 'WatchBumpTesting WatchKit App' do

end

target 'WatchBumpTesting WatchKit Extension' do

end

我首先关注他们网站上的tutorial。它描述了如何启用本地数据共享、钥匙串共享和应用程序组。这是我开始遇到问题的地方...

我在我的 iOS 应用中启用了数据共享没有问题。我在我的 AppDelegate.h 文件中导入了<Parse/Parse.h>,并且能够使用以下代码完成设置。

// Enable data sharing in main app.
[Parse enableDataSharingWithApplicationGroupIdentifier:@”group.com.parse.parseuidemo”];
// Setup Parse
[Parse setApplicationId:@”<ParseAppId>” clientKey:@”<ClientKey>”];

接下来,我继续在 WatchKit 扩展上启用数据共享。我打开我的 InterfaceController.h 并尝试导入 Parse 但没有运气,找不到该库。 “好吧 - 这很有意义,我想我必须将它添加到我的 Podfile 中”......所以我做到了!我尝试了一些更新的 Podfile。

V1

# Uncomment this line to define a global platform for your project
platform :ios, '8.3'

target 'WatchBumpTesting' do
        pod 'Parse', '~> 1.7.5'
end

target 'WatchBumpTesting WatchKit App' do

end

target 'WatchBumpTesting WatchKit Extension' do
        pod 'Parse', '~> 1.7.5'
end

V2

# Uncomment this line to define a global platform for your project
platform :ios, '8.3'

def shared_pods
        pod 'Parse', '~> 1.7.5'
end

target 'WatchBumpTesting' do
        shared_pods
end

target 'WatchBumpTesting WatchKit App' do

end

target 'WatchBumpTesting WatchKit Extension' do
        shared_pods
end

V3

# Uncomment this line to define a global platform for your project
platform :ios, '8.3'

link_with 'WatchBumpTesting', 'WatchBumpTesting WatchKit Extension'

target 'WatchBumpTesting' do
        pod 'Parse', '~> 1.7.5'
end

target 'WatchBumpTesting WatchKit App' do

end

target 'WatchBumpTesting WatchKit Extension' do

end

这三个都产生了不同的结果,没有一个是我们想要的。 V3 不会安装 pod。它说[!] Targets with different platforms

V1 和 V2 导致警告和错误。警告...

Pods-WatchBumpTesting WatchKit Extension was rejected as an implicit dependency for 'libPods-WatchBumpTesting WatchKit Extension.a' because it doesn't contain platform 'watchsimulator' in its SUPPORTED_PLATFORMS 'iphonesimulator, iphoneos'

错误会根据我是否在扩展中导入库而改变。这一切带来的好处是我的 WatchKit Extension InterfaceController.h 文件现在可以看到 &lt;Parse/Parse.h&gt; 但是,当我导入它时,它抱怨 PFPurchase.h 找不到 StoreKit 库。

我尝试在 WatchKit 扩展目标“链接框架和库”中导入库,但找不到 - 我假设这是因为它是 iOS 9 而不是 WatchKit。在 iOS App 的目标中导入它并没有解决问题。

我收到的第二个错误是当我将 Podfile 保持原样(V1 和/或 V2)但没有在我的 InterfaceController.h 中导入 &lt;Parse/Parse.h&gt;&lt;Parse.h&gt; 这一次我收到了...

ld: library not found for -lPods-WatchBumpTesting WatchKit Extension-Bolts
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我完全不知所措。我已经用尽了所有选择!任何想法将不胜感激。我正在使用最新的 Xcode 7 Beta 以及 CocoaPods 0.37.2

【问题讨论】:

你解决过这个问题吗? 遗憾的是不能 Poyrazoğlu,我想我们将不得不等待更新的 CocoaPods 和 watchOS 2.0 【参考方案1】:

看起来您必须为面向 WatchOS 应用的 CocoaPod 配置指定 watchos 平台。看看这个以获取更多信息:https://github.com/neonichu/native-watchOS-example?

【讨论】:

嗯,差不多。我已经编辑了我的 Podfile gist.github.com/iiAtlas/52880c865155195a7aa1 但仍然没有运气。我收到 Parse 的 clang 错误“ld:架构 x86_64 clang 的 2 个重复符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)” 我相信这个错误来自use_frameworks!我的 Podfile 中的一行 我可以通过省略 use_frameworks! 来解决这个错误,但遗憾的是我无法从我的 AppDelegate.h 中找到 Parse 库 标题搜索路径和 .xcconfig 在我看来都很好

以上是关于无法在 WatchKit 扩展(CocoaPods)中使用 Parse 库的主要内容,如果未能解决你的问题,请参考以下文章

在主要目标中包含 pod,而不是在 WatchKit 扩展中

WatchKit 无法从 Pod 导入库

添加 watchkit 时带有 cocoapods 的 Swift 项目出现新错误

无法理解 watchkit 扩展崩溃

Watchkit 扩展的嵌套框架问题

为啥我的库无法在 CocoaPods 网站上扩展?