Prefix Static Library iOS

前端 未结 1 1529
别跟我提以往
别跟我提以往 2020-12-23 23:45

I\'m building an iOS static library (as per https://github.com/jverkoey/iOS-Framework). I depend on SBJson and AFNetworking. I would like to include these libraries to avoid

相关标签:
1条回答
  • 2020-12-23 23:57

    The only safe solution (other than not doing this at all) is to build any dependencies with a prefix on all symbols.

    The easiest method of prefixing is the classic "find-and-replace". This is error-prone, so it's a good idea to hit the .a with nm -a and scour the results for any non-prefixed symbols.

    A second, much safer method is to use a two-pass compilation process.

    • The first pass builds the dependent project and runs nm to dump all symbols into a header file.
    • The second pass builds the dependent project again, but this time with the generated prefix header file imported in the precompiled header. This prefix header must be used anywhere you reference symbols from the dependency in your framework in order to properly refer to the renamed symbols.

    For reference, we use this with Nimbus to generate the Nimbus prefix headers: https://github.com/jverkoey/nimbus/blob/master/scripts/generate_namespace_header

    This allows you to distribute a .framework with a prefixed version of Nimbus embedded.

    You can now link the resulting .a into your framework and safely avoid any linker conflicts when a third party developer inevitably links their own version of the dependency into their project.

    0 讨论(0)
提交回复
热议问题