tbd格式解析

作者: 雾中探雪 | 来源:发表于2021-03-23 16:05 被阅读0次

    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 <arg>:传递参数给clang parser。常用参数有:-Wno-deprecated-declarations、-Wno-unavailable-declarations
    
    -exclude-public-header <path>:引入的需要解析的public头文件路径
    

    比如,当前SYTimer配置如下:

    image

    参考资料

    man tapi-installapi
    Build Setting配置说明

    相关文章

      网友评论

        本文标题:tbd格式解析

        本文链接:https://www.haomeiwen.com/subject/meuocltx.html