情況一:第三方靜態(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)單剖析】-
自己的動(dòng)態(tài)庫SDK調(diào)用的是自己的動(dòng)態(tài)庫SDK里面的類對(duì)象RSStaticPrint A(即自己的動(dòng)態(tài)庫SDK.framework里的代碼) -
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的這份
