【Rason的iOS每周小應(yīng)用】iOS靜態(tài)庫與動(dòng)態(tài)庫集成問題

情況一:第三方靜態(tài)庫,被自己的動(dòng)態(tài)庫、App同時(shí)集成:

  • 經(jīng)典警告:
    One of the two will be used. Which one is undefined.
    image.png
  • 具體集成情況:
    第三方靜態(tài)庫(比如RSStaticPrint)同時(shí)被APP、自己的動(dòng)態(tài)庫SDK集成,APP又嵌入自己的動(dòng)態(tài)庫SDK
  • 分析:
    【現(xiàn)象】存在兩份靜態(tài)庫,各自load方法都會(huì)執(zhí)行,根據(jù)調(diào)用位置各自調(diào)用所在位置的第三方靜態(tài)庫(比如RSStaticPrint)。
    【對(duì)象情況簡(jiǎn)單剖析】
    1. 自己的動(dòng)態(tài)庫SDK調(diào)用的是自己的動(dòng)態(tài)庫SDK里面的類對(duì)象RSStaticPrint A(即自己的動(dòng)態(tài)庫SDK.framework里的代碼)
    2. App調(diào)用的實(shí)際上是類對(duì)象RSStaticPrint B(即.app里的二進(jìn)制代碼)
  • 經(jīng)典應(yīng)用:
    【無法調(diào)起微信登錄問題(微信登錄通過Pod只能靜態(tài)庫形式集成)】
    【問題】
    自己的動(dòng)態(tài)庫APP同時(shí)集成微信登錄的靜態(tài)庫,導(dǎo)致Appdelegate的回調(diào)無法進(jìn)行。因?yàn)槲⑿懦跏蓟突卣{(diào)在Appdelegate,而微信登錄調(diào)用位置在自己的動(dòng)態(tài)庫SDK,由于Appdelegate(即App的位置)和自己的動(dòng)態(tài)庫SDK用的不是同一個(gè)類對(duì)象,所以由于未初始化,無法調(diào)起微信登錄
    【處理】
    動(dòng)態(tài)庫直接集成微信登錄的靜態(tài)庫,App不要靜態(tài)集成

情況二:第三方動(dòng)態(tài)庫(比如RSStaticPrint)同時(shí)被APP、自己的動(dòng)態(tài)庫SDK集成嵌入

結(jié)論:不會(huì)有問題,實(shí)際上都是同一份,即*.app/frameworks/*.framework的這份

進(jìn)一步探究(選看)

Using Firebase from a framework or a library

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容