【问题标题】:Adding target to CocoaPods for extension将目标添加到 CocoaPods 以进行扩展
【发布时间】:2017-01-19 12:56:33
【问题描述】:

Okej,我现在已经为此奋斗了几个小时,但我完全没有想法。我正在创建具有获取当前观看的网站 URL 所需的操作扩展的应用程序。我需要在应用程序和扩展程序之间共享一些代码(主要是网络 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

有什么想法吗?

【问题讨论】:

  • 您是否尝试过将项目名称 xxxExtension 更改为 yyyMain。或尝试从头到尾移除
  • 不明白如何将名称 xxxExtension 更改为 yyyMain?它与 yyyMain 模块不同,它们如何共享相同的名称?并且已经移动了几次订单,没有帮助。这太奇怪了,因为在链接的链接框架和库中有 yyyExtension

标签: ios swift xcode cocoapods ios-extensions


【解决方案1】:

好的,这有点棘手,我做了一些可能导致解决问题的更改。

首先是添加

    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 文件。

另外,可能需要进入构建阶段并使用库删除链接二进制文件。

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

祝你好运!

【讨论】:

    猜你喜欢
    • 2018-01-08
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 2018-07-08
    相关资源
    最近更新 更多