如何将私有框架导入 Xcode 9.2 (iOS 11) , swift

neh*_*ngh 2 frameworks private ios swift xcode9.2

我想出于研究目的(不是 App Store!)测试一些东西,我想在其中使用 Xcode 9.2 (iOS 11) 中的私有框架。为此,我需要将要使用的私有框架导入到我的 Xcode 项目中。

但是在 Xcode 9.2 中,文件夹结构私有框架文件夹不存在。

我可以通过什么想法来实现这一目标?

cle*_*ens 5

私有框架只是一个像公共框架一样的包。您可以使用以下命令显式加载它:

if let framework = Bundle(path: "/System/Library/PrivateFrameworks/BatteryCenter.framework") {
    // Works only on real devices
    framework.load()
}
Run Code Online (Sandbox Code Playgroud)

但是您需要包含类的声明。您可以使用class-dumpObjective C 标头创建它们,然后将跨桥标头导入 Swift。

class-dumpclass-dump /.../PrivateFrameworks/XXX.framework/XXX. 您需要将框架作为二进制而不是*.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/电池中心

这将为您打印框架中包含的所有类的类声明。

请注意,在您应该使用的设备或模拟器上

/System/Library/PrivateFrameworks/BatteryCenter.framework
Run Code Online (Sandbox Code Playgroud)

用于加载包。