我想测试一些用于研究目的的东西(不是 App Store!),我想在其中使用 Xcode 9.2 (iOS 11) 中的私有(private)框架。为此,我需要将我想要使用的私有(private)框架导入到我的 Xcode 项目中。
但是在 Xcode 9.2 中,文件夹结构中的私有(private)框架文件夹不存在。
有什么想法可以帮助我实现这一目标吗?
最佳答案
私有(private)框架只是像公共(public)框架一样的 bundle 。您可以使用以下方式显式加载它:
if let framework = Bundle(path: "/System/Library/PrivateFrameworks/BatteryCenter.framework") {
// Works only on real devices
framework.load()
}
但是您需要包含的类的声明。您可以使用 class-dump
创建它们作为 Objective C header ,并通过桥接 header 将其导入到 Swift 中。
您使用class-dump/.../PrivateFrameworks/XXX.framework/XXX
执行class-dump
。您需要二进制框架而不是 *.tbd
文件。 BatteryCenter.framework
示例:
class-dump /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/BatteryCenter.framework/BatteryCenter
这将打印框架中包含的所有类的类声明。
请注意,您应该在设备或模拟器上使用
/System/Library/PrivateFrameworks/BatteryCenter.framework
用于加载 bundle 。
关于ios - 如何快速导入私有(private)框架到 Xcode 9.2 (iOS 11),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49442883/