我有一个向用户提供调查的应用程序。其中一个合作伙伴名为 Bitlabs,我们可以通过以下方式导入他们的 SDK:
com.github.BitBurst-GmbH.bitlabs-android-library:core:3.1.19
我使用的另一个伙伴是Pollfish。根据 Pollfish documentation,我们应该(可选)添加明文 http 流量。请参阅文档中的步骤6.2。到目前为止,一切都很好。我创建 XML 文件,并将
android:networkSecurityConfig
添加到我的清单中。
当我尝试构建项目时,问题发生了。看来之前的合作伙伴(Bitlabs)已经有一个
android:networkSecurityConfig
,并且构建项目失败并显示:
Caused by: java.lang.RuntimeException: Manifest merger failed : Attribute application@networkSecurityConfig value=(@xml/domain_whitelist) from AndroidManifest.xml:24:9-62
is also present at [com.github.BitBurst-GmbH.bitlabs-android-library:core:3.1.19] AndroidManifest.xml:15:18-78 value=(@xml/network_security_config).
Suggestion: add 'tools:replace="android:networkSecurityConfig"' to <application> element at AndroidManifest.xml:19:5-148:19 to override.
at com.android.build.gradle.internal.tasks.manifest.ManifestHelperKt.mergeManifests(ManifestHelper.kt:125)
at com.android.build.gradle.internal.tasks.manifest.ManifestHelperKt.mergeManifests$default(ManifestHelper.kt:46)
at com.android.build.gradle.tasks.ProcessApplicationManifest.doTaskAction(ProcessApplicationManifest.kt:178)
...
根据异常,我可以简单地将
tools:replace="android:networkSecurityConfig"
添加到我的清单上的应用程序元素中,但据我了解,这将取代 Bitlabs networkSecurityConfig
,对吧?
有什么方法可以保留这两个不同的配置吗?也许合并它们什么的?
您可以手动将 Bitlabs 的
network_security_config.xml
文件中的数据添加到您的 domain_whitelist.xml
,并在 <application
中添加 AndroidManifest.xml
标签,如下所示:
<application
...
android:networkSecurityConfig="@xml/domain_whitelist"
tools:replace="android:networkSecurityConfig"
...>