【发布时间】:2018-03-30 14:35:36
【问题描述】:
在我的 Android 项目中,我有 2 个都依赖于 WebRTC 的库。这两个库都强制包含 WebRTC。这两个库都没有重命名 WebRTC 库(尽管有自定义)。两位开发者都坚称必须以这种方式强制包含 WebRTC(我对此深表怀疑)。
我该如何解决这个依赖冲突?
我已经尝试过这里描述的解决方案:
https://medium.com/mindorks/avoiding-conflicts-in-android-gradle-dependencies-28e4200ca235
但这特别需要依赖关系是可传递的。在我的情况下,哪些硬包含的库不是。如果我打电话给gradlew dependencies,WebRTC 甚至不会出现在该列表中。但是在编译时,我得到像Multiple dex files define Lorg/webrtc/VideoFileRenderer$2; 这样的错误,其中“VideoFileRenderer”是每次编译时与 org.webrtc 不同的文件。清理构建树或缓存没有解决任何问题。
有问题的库是:
- Ahoy 会议:https://github.com/ahoyconference/cordova-ahoyrtc/tree/master/src/android/libs
- TokBox : https://tokbox.com/developer/sdks/android/
这两个库在运行时绝不会同时使用。我只需要在编译时包含两者。此外,每个用户在注册时只进行一次视频通话以表明自己的身份。
【问题讨论】:
-
我认为除非您可以重新编译这些库,否则您无能为力。您可以使用这些提供者(ahoy 和 tokbox)在构建 WebRTC 时为 WebRTC 类(例如 com.ahoy.org.webrtc)使用自定义命名空间,这样它们之间就不会发生冲突。
-
感谢您的回复。很难相信没有其他解决方案。毕竟,考虑到库的数量,我不能成为第一个遇到这个问题的开发人员。