如何保留来自不同库的两个networkSecurityConfig?

问题描述 投票:0回答:1

我有一个向用户提供调查的应用程序。其中一个合作伙伴名为 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
,对吧?

有什么方法可以保留这两个不同的配置吗?也许合并它们什么的?

android android-manifest android-network-security-config
1个回答
0
投票

您可以手动将 Bitlabs 的

network_security_config.xml
文件中的数据添加到您的
domain_whitelist.xml
,并在
<application
中添加
AndroidManifest.xml
标签,如下所示:

<application
    ...
    android:networkSecurityConfig="@xml/domain_whitelist"
    tools:replace="android:networkSecurityConfig"
    ...>

© www.soinside.com 2019 - 2024. All rights reserved.