ios - 将目标添加到 CocoaPods 进行扩展

标签 ios swift xcode cocoapods ios-extensions

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

知道发生了什么吗?

最佳答案

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

首先是添加

    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,并且应在清理后的项目上重新创建新链接。

祝你好运!

关于ios - 将目标添加到 CocoaPods 进行扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41742335/

相关文章:

ios - 使用幻灯片刷新时表格单元格重复

ios - Program/ProgramArguments 无效或缺失

javascript - RTCPeerConnection iOS 12.2 至 Android 7.X

iphone - 如何以编程方式查看相册中的照片?

ios - 如何在 iOS Swift 中录制视频时拍摄照片?

ios - SceneKit - 修改节点面向方向的速度

ios - 如何在 iOS Swift 中显示库中的实时照片视频并显示在 Collection-View 中?

xcode - 是否可以在没有 Xcode 的情况下使用 XCTest 单元测试?

ios - 在swift的自定义类型数组上使用.contains

ios - 快速将数据传递给 Javascript