【Rason的iOS每周小应用】iOS静态库与动态库集成问题

时间:2021-7-21 作者:qvyue

情况一:第三方静态库,被自己的动态库、App同时集成:

  • 经典警告:
    One of the two will be used. Which one is undefined.
    【Rason的iOS每周小应用】iOS静态库与动态库集成问题
    image.png
  • 具体集成情况:
    第三方静态库(比如RSStaticPrint)同时被APP自己的动态库SDK集成,APP又嵌入自己的动态库SDK
  • 分析:
    【现象】存在两份静态库,各自load方法都会执行,根据调用位置各自调用所在位置的第三方静态库(比如RSStaticPrint)。
    【对象情况简单剖析】

    1. 自己的动态库SDK调用的是自己的动态库SDK里面的类对象RSStaticPrint A(即自己的动态库SDK.framework里的代码)
    2. App调用的实际上是类对象RSStaticPrint B(即.app里的二进制代码)
  • 经典应用:
    【无法调起微信登录问题(微信登录通过Pod只能静态库形式集成)】
    【问题】
    自己的动态库APP同时集成微信登录的静态库,导致Appdelegate的回调无法进行。因为微信初始化和回调在Appdelegate,而微信登录调用位置在自己的动态库SDK,由于Appdelegate(即App的位置)和自己的动态库SDK用的不是同一个类对象,所以由于未初始化,无法调起微信登录
    【处理】
    动态库直接集成微信登录的静态库,App不要静态集成

情况二:第三方动态库(比如RSStaticPrint)同时被APP、自己的动态库SDK集成嵌入

结论:不会有问题,实际上都是同一份,即*.app/frameworks/*.framework的这份

进一步探究(选看)

Using Firebase from a framework or a library

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。