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
:
然后,通过
Other Text-Based InstallAPI Flags
给tapi-installapi
工具传递参数,常用的参数有:
-ObjC:将输入文件视为Objective-C文件(默认)
-ObjC++:将输入文件视为Objective-C++文件
-x<语言>:值为c、c++、Objective-c和Objective-c++
-Xparser <arg>:传递参数给clang parser。常用参数有:-Wno-deprecated-declarations、-Wno-unavailable-declarations
-exclude-public-header <path>:引入的需要解析的public头文件路径
比如,当前SYTimer
配置如下:
网友评论