gpt4 book ai didi

ios - 如何正确设置同时具有框架目标和使用该框架的应用程序目标的 Podfile

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:54 27 4
gpt4 key购买 nike

具有以下项目结构:

  • 应用程序目标驻留在 Xcode 项目 (App.xcodeproj) 上,依赖于驻留在不同 Xcode 项目 (Framework.xcodeproj) 上的框架目标。
  • 应用目标取决于Material pod
  • 框架目标取决于 AFNetworking pod。

CocoaPods 是否支持这种设置?

我的第一次尝试是做这样的事情:

platform :ios, '9.0'
use_frameworks!

target 'App' do
workspace 'App.xcworkspace'
project 'App.xcodeproj'
pod 'Material'
end

target 'Framework' do
workspace 'App.xcworkspace'
project 'Framework/Framework.xcodeproj'
pod 'AFNetworking'
end

但应用程序在启动时崩溃并出现以下错误:

dyld: Library not loaded: @rpath/AFNetworking.framework/AFNetworking

Referenced from: /Users/ruenzuo/Library/Developer/Xcode/DerivedData/App-aayvulxvruuarudtheuilepmmctk/Build/Products/Debug-iphonesimulator/Framework.framework/Framework

Reason: image not found

这是有道理的,因为 CocoaPods 不知道 App 和 Framework 是相关的。事实上,在 pod install 之后我收到以下警告:

[!] The Podfile contains framework targets, for which the Podfile does not contain host targets (targets which embed the framework).
If this project is for doing framework development, you can ignore this message. Otherwise, add a target to the Podfile that embeds these frameworks to make this message go away (e.g. a test target).

然后我尝试将框架目标嵌入到应用程序目标中,如下所示:

platform :ios, '9.0'

use_frameworks!

target 'App' do
workspace 'App.xcworkspace'
project 'App.xcodeproj'
pod 'Material'
target 'Framework' do
workspace 'App.xcworkspace'
project 'Framework/Framework.xcodeproj'
pod 'AFNetworking'
end
end

但是没有用。我设法让它工作的唯一方法是:

platform :ios, '9.0'
use_frameworks!

target 'App' do
workspace 'App.xcworkspace'
project 'App.xcodeproj'
pod 'Material'
pod 'AFNetworking'
end

target 'Framework' do
workspace 'App.xcworkspace'
project 'Framework/Framework.xcodeproj'
pod 'AFNetworking'
end

但是重复 AFNetworking pod 感觉就像我做错了什么。此外,我没有设法消除警告,所以显然我只是通过让 CocoaPods 将 AFNetworking pod 复制到应用程序框架目录来强制它工作。

有没有人设法让这样的东西工作?

最佳答案

诀窍是将框架目标添加到应用程序目标的“目标依赖项”构建阶段,如下所示:

Xcode screenshot

出于某种原因,CocoaPods 依赖于“目标依赖项” - 让您的库/框架处于“与二进制库链接” 阶段是不够的。您的 Podfile 应该如下所示:

project 'CocoapodsTest'

target 'CocoapodsTest' do
pod 'AFNetworking'
end

target 'SampleLibrary' do
pod 'Masonry'
end

运行 pod install 后,您可以检查应用程序目标的“其他链接器标志”,以验证它是否将您的应用程序和库的依赖项转发到链接器:

Xcode screenshot

关于ios - 如何正确设置同时具有框架目标和使用该框架的应用程序目标的 Podfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43400739/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com