构建 Android APK 时如何修复 "Type org.freedesktop.gstreamer.GStreamer is defined multiple times" 错误?

How can I fix "Type org.freedesktop.gstreamer.GStreamer is defined multiple times" error when building an Android APK?

几个月来,我一直致力于一个项目,将 gstreamer 集成到一个基本的反应本机 Android 应用程序中。起点是 react-native-gstreamer,但对 gstreamer 管道等进行了大量修改。

我的调试版本(使用 yarn android./gradlew assembleDebug 创建)一直在模拟和真实设备上可靠地工作,但我无法获得发布版本/签名 APK ./gradlew assembleRelease 上班。显示错误的构建扫描(使用 ./gradlew assembleRelease --scan 创建,似乎不包含任何敏感信息?)位于 scans.gradle.com。我遇到的错误是

C:\Temp\MyApp\app\intermediates\project_dex_archive\release\out\org\freedesktop\gstreamer\GStreamer.dex: D8: Type org.freedesktop.gstreamer.GStreamer is defined multiple times: C:\Temp\MyApp\app\intermediates\project_dex_archive\release\out\org\freedesktop\gstreamer\GStreamer.dex, C:\Temp\MyApp\react-native-gstreamer.transforms\b22258b54d8d354026f3fb18b0251db4\transformed\classes\classes.dex com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.

我是 Android 开发的新手(主要是 C++/Python 开发人员),所以我可能遗漏了一些明显的东西,这似乎是一个常见问题(见下文)但是 link 中的错误对我没有帮助,我找到的解决方案也没有用。

我无法确定的最可能原因是 some sort of dependency clash, similar to this issue also,但我没有很多依赖项,它似乎与 gstreamer 特别相关,我不知道在哪里进一步挖掘找到冲突。

./gradlew app:dependencies 没有显示任何明显的不良依赖关系。 react-native-gstreamer 依赖于 com.facebook.react:react-native:+ -> 0.63.4 (*) 并且没有出现在依赖项的任何其他上下文中(即上述依赖项在输出中出现了几次,但 react-native-gstreamer 不是依赖项其他软件包并且没有其他依赖项并且没有其他 gstreamer)

Whosebug 上其他地方的类似错误和我未成功测试的解决方案:

错误消息提到两个 dex 源,其中包含 org.freedesktop.gstreamer.GStreamer class:

  • C:\Temp\MyApp\app\intermediates\project_dex_archive\release\out\org\freedesktop\gstreamer\GStreamer.dex
  • C:\Temp\MyApp\react-native-gstreamer.transforms\b22258b54d8d354026f3fb18b0251db4\transformed\classes\classes.dex

第一个源的 project_dex_archive 文件夹通常包含从项目源文件构建的输出工件。您的应用程序模块是否可能包含 GStreamer.java 个源文件?
如果是 - 那么它可能是冲突的根本原因,因为您很可能将类似的工件打包在第三方依赖项中(第二个 dex 源:react-native-gstreamer)。