标签: embedded-framework

这是使用嵌入式可可豆荚创建动态/嵌入式框架的正确方法吗?

我正在尝试创建一个动态框架来在我的应用程序的各种扩展之间共享代码。

问题 :

这是我的项目结构。

在此输入图像描述

MyFrameworks 是我的应用程序的网络层,本质上使用 Alamofire。我的 pod 文件的结构如下。

platform :ios, '9.0'
use_frameworks!

workspace 'CocoaPodsProjectworkspace'

def shared_pods
    pod 'Alamofire'
    pod 'SwiftyJSON'
end

target 'CocoaPodsProject' do
    project 'CocoaPodsProject.xcodeproj'
    # Pods for CocoaPodsProject
end

target 'MyFramework' do
    project 'MyFramework/MyFramework.xcodeproj'
    shared_pods
end

target 'CocoaPodsProjectTests' do

end

target 'CocoaPodsProjectUITests' do

end
Run Code Online (Sandbox Code Playgroud)

在构建框架时,当我将其作为嵌入式二进制文件拖到我的主项目中时,我收到错误。

dyld:未加载库:.framework/Alamofire 引用自:/Users/sandeep/Library/Developer/Xcode/DerivedData/CocoaPodsProjectworkspace-enpobdyluhbxdwazuvbfogcspfof/Build/Products/Debug-iphonesimulator/MyFramework.framework/MyFramework 原因:未找到图像

我尝试过的解决方案:

  • 在链接的二进制文件中将 pods_frameworks.framework 声明为可选。
  • 尝试更改框架动态库的 RunPath Search 路径
  • 安装名称 运行 pod deintegrate 并再次运行 pod install。
  • 删除派生数据和重新链接框架都会导致同样的问题。

有效的解决方案:

我意识到 MyFramework.framework 试图在错误的目录中找到 Alamofire.framework,并且它总是尝试使用框架相对于项目/目标进行搜索。所以我能找到的最简单的解决方案是修改 pod 文件,如下所示。

platform :ios, '9.0'
use_frameworks!

workspace 'CocoaPodsProjectworkspace' …
Run Code Online (Sandbox Code Playgroud)

ios cocoapods swift3 embedded-framework

2
推荐指数
1
解决办法
2752
查看次数

标签 统计

cocoapods ×1

embedded-framework ×1

ios ×1

swift3 ×1