在 Pod 中嵌入没有模块的框架

Embed a framework without module in a Pod

我正在使用作为框架提供的第 3 方库:Library.framework。显然,它只能通过桥接头在我的 Swift 项目中使用 #import <Library/Library.h>。在大多数情况下这很好。

但是,我目前正在开发一个 Pod,我想在其中使用 Library.framework。这意味着我不能依赖桥接头。

我尝试 link 我的 Pod 目标中的 Library.framework(参见 General > Linked Frameworks and Libraries)但是,一旦 Pod 安装在我的应用程序中,Xcode 说Pod无法编译,因为找不到库中的某些文件。

这里采用的最佳策略是什么?

在您的 pod 项目中,我假设您有一个名为 [PodName].h 的文件,它看起来类似于下面的文件。 您可以尝试在此文件中添加 header。

//
//  PodName.h
//  PodName
//
//  Created by John Doe on 06.04.2016.
//  Copyright © 2016 John Doe Inc. All rights reserved.
//

#import <UIKit/UIKit.h>

//! Project version number for PodName.
FOUNDATION_EXPORT double PodNameVersionNumber;

//! Project version string for PodName.
FOUNDATION_EXPORT const unsigned char PodNameVersionString[];

// In this header, you should import all the public headers of your framework using statements like #import <PodName/PublicHeader.h>

#import <Library/Library.h> // Add framework header here.

我想我做到了。

诀窍是在 Pod.podspec.

中的 source_filespublic_header_files 中添加 .h 文件

像这样:

s.source_files = 'Library.framework/Headers/*.h'
s.public_header_files = 'Library.framework/Headers/*.h'

这样,所有头文件都出现在 Pod-umbrella.h 中,现在可以在我的应用程序中使用了。