问题描述
项目中依赖了 libc++_shared.so
,在编译时会与融云 SDK 中依赖的 libc++_shared.so
发生冲突。
报错堆栈
2 files found with path 'lib/arm64-v8a/libc++_shared.so' from inputs:
- /{path1}/jni/arm64-v8a/libc++_shared.so
- /{path2}/transformed/jetified-im_libcore-5.x.x/jni/arm64-v8a/libc++_shared.so
path1 和 2 代表冲突路径,是由于项目与融云SDK中同时引入了 libc++_shared.so
,导致冲突。
解决方案
方案一
-
项目中去掉libc++_shared.so;
-
在
build.gradle
添加如下代码做去重:packagingOptions { pickFirst('lib/armeabi-v7a/libc++_shared.so') pickFirst('lib/arm64-v8a/libc++_shared.so') pickFirst('lib/x86/libc++_shared.so') pickFirst('lib/x86_64/libc++_shared.so') }
方案二(SDK 版本大于等于 5.6.1)
如果融云 SDK 中的 libc++_shared.so
不满足项目要求,并且需要剔除融云SDK中的 libc++_shared.so
,使用此方案。
依赖融云 SDK 时,按照exclude方式排除 libc++_shared.so
,如下:
implementation ("cn.rongcloud.sdk:im_lib:x.y.z") {
exclude group: 'cn.rongcloud.sdk', module: 'cpp_shared'
}
// 如不使用Kit SDK,则下面代码可以不添加
implementation ("cn.rongcloud.sdk:im_kit:x.y.z") {
exclude group: 'cn.rongcloud.sdk', module: 'cpp_shared'
}
更多支持
如有疑问,欢迎提交工单。