前言
????????隨著App功能增多,集成的so庫也會增多,如果系統中多個so庫都使用系統自動生成的libc++_shared.so庫,如果多個SDK都有該so包,就會出現報錯:
解決辦法
????????如果出現該問題,說明您的項目中有多個SDK共同依賴了C++標準動態庫,請在您的主程序build.gradle中增加以下代碼:
android?{packagingOptions?{pickFirst?'lib/*/libc++_shared.so'}
}
????????在Android Gradle插件中,packagingOptions
用于定義打包apk時的選項。其中,pickFirst
是一個針對沖突解決的策略之一。
????????具體來說,pickFirst
用于指定在打包時遇到沖突時使用哪個文件。當打包過程中出現同名的文件時,如果指定了pickFirst
,則會優先使用第一個找到的文件,而其他同名文件則會被忽略。
總結
????????網上還有別的方案:刪除SDK中的libc++_shared.so文件,這種方式完全不可取,刪除后會造成SDK無法編譯,或者第三方SDK高度集成的根本無法刪除,所以本解決方案才是最可取的。