tbd格式解析

tbd格式解析

tbd全称是text-based stub libraries,本质上就是一个YAML描述的文本文件。YAML是一个可读性高,用来表达数据序列化的格式。

tbd用于记录链接动态库的必要信息,包括动态库导出符号、动态库的架构信息、动态库的依赖信息、动态库的链接路径等。

--- !tapi-tbd
tbd-version:     4
targets:         [ x86_64-ios-simulator ]
uuids:
  - target:          x86_64-ios-simulator
    value:           9C190961-9E37-39E1-907F-B35E5F8F96E9
flags:           [ not_app_extension_safe ]
install-name:    '@rpath/SYTimer.framework/SYTimer'
exports:
  - targets:         [ x86_64-ios-simulator ]
    objc-classes:    [ SYDeferrableOneShotTimer, SYHeap, SYHeapItem, SYMainThreadSharedTimer, 
                       SYRunLoop, SYRunLoopTimer, SYRunLoopTimerBase, SYThreadSpecificVariable, 
                       SYThreadTimers, SYTimer, SYTimerBase, SYTimerGlobalData ]

tbd生成原理

tbd格式文件,本身是通过Xcode内置工具tapi-installapi专门来生成的,具体路径为:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/tapi installapi

tbd文件生成实例

当前有一个名为SYTimer.framework这样一个动态库framework,如何生成tbd格式文件?

首先来到Build Setting,找到Text-Based API,将Supports Text-Based InstallAPI设置为Yes

image

然后,通过Other Text-Based InstallAPI Flagstapi-installapi工具传递参数,常用的参数有:

-ObjC:将输入文件视为Objective-C文件(默认)

-ObjC++:将输入文件视为Objective-C++文件

-x<语言>:值为c、c++、Objective-c和Objective-c++

-Xparser :传递参数给clang parser。常用参数有:-Wno-deprecated-declarations、-Wno-unavailable-declarations

-exclude-public-header :引入的需要解析的public头文件路径

比如,当前SYTimer配置如下:

image

参考资料

man tapi-installapi
Build Setting配置说明

你可能感兴趣的:(tbd格式解析)