请将嵌入式目标的主机目标添加到 Podfile

Posted

技术标签:

【中文标题】请将嵌入式目标的主机目标添加到 Podfile【英文标题】:Please add the host targets for the embedded targets to the Podfile 【发布时间】:2018-12-04 07:26:42 【问题描述】:

我的项目是 Swift 2.0。我正在尝试所有可能的方法,但没有找到任何解决方案。

我的 pod 文件

# Uncomment this line to define a global platform for your project
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, :deployment_target => '8.0'
# ignore all warnings from all pods
inhibit_all_warnings!
use_frameworks!


def available_pods
    pod 'IQKeyboardManager'
    pod 'Instabug'
    pod "TSMessages"
    pod 'AsyncSwift' , :git => 'https://github.com/duemunk/Async.git'

    pod 'Onboard' # not used
    pod 'DZNEmptyDataSet' # not used
    pod 'iOS-Slide-Menu'
    pod 'Kanna', :git => 'https://github.com/tid-kijyun/Kanna.git'
    pod 'HanekeSwift', :git => 'https://github.com/Haneke/HanekeSwift.git'
    pod 'Alamofire'
    pod 'ObjectMapper', :git => 'https://github.com/Hearst-DD/ObjectMapper.git'
    pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git'
    pod 'ReachabilitySwift'
    pod 'SCLAlertView'
    pod 'ImageLoader'
    pod 'NVActivityIndicatorView', :git => 'https://github.com/ninjaprox/NVActivityIndicatorView.git'
    pod 'ActiveLabel'
    pod 'MWFeedParser'
    pod "SwiftElegantDropdownMenu"
    pod 'SwiftHEXColors'
    pod 'UITextView+Placeholder'
    pod "AFDateHelper"
    pod 'DateTools'
    pod "SwiftDate", "~> 2.0"
    pod 'APAddressBook/Swift'
    pod 'FBSDKLoginKit'
    pod 'FBSDKCoreKit'
    pod 'FBSDKShareKit'
    pod 'PusherSwift', git: 'https://github.com/pusher/pusher-websocket-swift.git', branch: 'push-notifications'

end

def available_pods_exc
    pod 'Alamofire'
    pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git'
    pod 'ReachabilitySwift'
    pod 'Kanna', :git => 'https://github.com/tid-kijyun/Kanna.git'
    pod 'AsyncSwift' , :git => 'https://github.com/duemunk/Async.git'
end



target 'link' do
    available_pods

end

target 'ReadLaterExtension' do
    available_pods_exc
    end

target 'Link Tests' do
    pod 'Quick', '0.3.1'
    pod 'Nimble'
end

我发现下面的错误

[!] Unable to find host target(s) for ReadLaterExtension. Please add the host targets for the embedded targets to the Podfile.
Certain kinds of targets require a host target. A host target is a "parent" target which embeds a "child" target. These are example types of targets that need a host target:

- Framework
- App Extension
- Watch OS 1 Extension
- Messages Extension (except when used with a Messages Application)

【问题讨论】:

【参考方案1】:

问题不在podfile,而在项目!

修复:

转到 XCode 选择您的 HOST 目标。 打开目标的“常规”页面

在“嵌入式​​二进制文件”部分,确保您的 EXTENSION 目标存在。

在你的 Podfile 中你应该有:

target 'HostApp' do .... target 'YourExtension' do .... end end

【讨论】:

【参考方案2】:

为了禁用构建/运行您构建的 NSExtension,您应该:

    在项目导航器中点击项目文件 单击包含的应用程序目标(您想要运行的目标) 单击构建阶段选项卡 打开目标依赖项 删除扩展程序(您不想运行的那个) 要恢复它,只需单击同一位置的 + 号,然后 重新添加。

在我的情况下工作成功

【讨论】:

【参考方案3】:

为了将来参考,我想添加一个我刚刚发现的此错误消息的原因:

在主要目标构建阶段中,Embed App Extensions 部分必须位于 [CP] Copy Pods Resources[CP] Embed Pods Frameworkds 之上。

【讨论】:

以上是关于请将嵌入式目标的主机目标添加到 Podfile的主要内容,如果未能解决你的问题,请参考以下文章

如何建立Qt Creator交叉编译嵌入式Linux

嵌入式系统开发为啥要采用交叉编译的方式

嵌入式Linux的GDB远程调试如何实现呢?

Cocoapods podfile 目标仅向测试添加框架

交叉编译工具链

交叉编译工具链(详解)