iOS 混合动态框架 - 桥接 objc headers 与私有模块
iOS mixed dynamic framework - bridge objc headers with private module
关于 "dynamic framework" 目标,我需要将内部(私有)objective-c
header 连接到我的 swift
对象。
根据我的理解,我需要使用私有模块。
其中一些 swift 对应项使用 @objc class TheClass
语法桥接到 objective-c。
我已经在 $SRCROOT
下的目录中创建了一个 module.modulemap
和一个 module.private.modulemap
文件,并将 "necessary" 标志添加到构建设置中。
SWIFT_INCLUDE_PATHS =>$(SRCROOT)/...
我也试过在构建设置中添加 "Private module map file"
我的模块映射文件是:
module InnerModule {
export *
}
私有模块文件为:
explicit module InnerModule.Private {
header "../Classes/Header1.h"
header "../Classes/Header2.h"
...
export * // and have tried without it
}
在我添加的所有相关 Swift 文件中
import InnerModule.Private
现在,在构建项目时,我的 swift 桥 header
出现错误
#import <MyFramework/MyFramework-Swift.h> // getting an error here
MyFramework-Swift.h // generated header file
@import UIKit;
@import ObjectiveC;
@import InnerModule.Private; Module InnerModule not found
如何解决这个问题?
原来你编译框架后可以到框架header,删除所有你不想暴露的"private" headers。
之后,您可以从 "Headers" 目录中删除所有不想公开的 header 文件。
按预期工作
关于 "dynamic framework" 目标,我需要将内部(私有)objective-c
header 连接到我的 swift
对象。
根据我的理解,我需要使用私有模块。
其中一些 swift 对应项使用 @objc class TheClass
语法桥接到 objective-c。
我已经在 $SRCROOT
下的目录中创建了一个 module.modulemap
和一个 module.private.modulemap
文件,并将 "necessary" 标志添加到构建设置中。
SWIFT_INCLUDE_PATHS =>$(SRCROOT)/...
我也试过在构建设置中添加 "Private module map file"
我的模块映射文件是:
module InnerModule {
export *
}
私有模块文件为:
explicit module InnerModule.Private {
header "../Classes/Header1.h"
header "../Classes/Header2.h"
...
export * // and have tried without it
}
在我添加的所有相关 Swift 文件中
import InnerModule.Private
现在,在构建项目时,我的 swift 桥 header
出现错误#import <MyFramework/MyFramework-Swift.h> // getting an error here
MyFramework-Swift.h // generated header file
@import UIKit;
@import ObjectiveC;
@import InnerModule.Private; Module InnerModule not found
如何解决这个问题?
原来你编译框架后可以到框架header,删除所有你不想暴露的"private" headers。
之后,您可以从 "Headers" 目录中删除所有不想公开的 header 文件。
按预期工作