将目标添加到CocoaPods以进行扩展

时间:2017-01-19 12:56:33

标签: ios swift xcode cocoapods ios-extensions

Okej,我现在已经和我斗争了几个小时了,而且我完全没有想法。我正在创建具有获取当前观看的网站网址所需的动作扩展的应用。我需要在应用程序和扩展程序(主要是网络API)之间共享一些代码,所以我还需要为它共享库(alamofire等)。

这是我的CocoaPods

use_frameworks!

target 'xxxExtension' do
pod 'ObjectMapper', '~> 2.2'
pod 'SwiftyJSON'
pod 'Alamofire', '~> 4.0'
pod 'Nuke', '~> 4.0'
pod -
pod -
end

target 'yyyMain' do
pod 'ObjectMapper', '~> 2.2'
pod 'SwiftyJSON'
pod 'Alamofire', '~> 4.0'
pod 'Nuke', '~> 4.0'
pod -
pod -
pod -
pod -
pod -
pod -
    target 'yyyMainTests' do
    inherit! :search_paths
    pod -
    pod -
    pod -
    pod -
    pod -
    end
end

正如你所看到的,我使用了use_frameworks的隐式抽象目标,我试图移动那些共享的pod,但这并没有太大改变。自己创建了abstract_target,同样的错误。

error: /Users/abc/Library/Developer/Xcode/DerivedData/yyyMain-fuuyjxathhqlfdczxrtmfewlpcpe/Build/Products/Debug-iphoneos/xxxExtension.appex: No such file or directory

任何想法会发生什么?

1 个答案:

答案 0 :(得分:0)

好的,这有点棘手,我做了很少的改动,可能导致解决问题。

首先是添加

    post_install do |installer_representation|
    installer_representation.pods_project.targets.each do |target|
        if target.name.start_with? "Pods-extensionName"
            target.build_configurations.each do |config|
                config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'AF_APP_EXTENSIONS=1']
            end
        end
    end
end

到podfile。

第二个是(除了所有清理,重建和删除派生数据)以手动删除二进制关联。为此,需要输入项目设置 - >目标 - > app - >一般 - > (在底部)嵌入式二进制文件并删除* .appex文件。

此外,可能需要使用Libaries来构建阶段并删除链接二进制文件。

最后要做的是通过“pod install”重新安装pod,并且应该在已清理的项目上重新创建新的链接。

古德勒克!