如何为不同的构建变体设置不同的网络安全配置?

12

我希望只在一个构建变体中信任证书。如何实现?


你是否有不同的网络安全配置,想要在其他构建变体中使用?或者你只想在这个变体中使用网络安全配置? - CommonsWare
我只想在这个变体中进行安全配置。 - Mladen Rakonjac
3个回答

18
创建一个变体的资源。在该源集中创建一个res/xml/目录,并将您的网络安全配置XML文件放置在其中。如有需要,可以在该源集中创建其他内容(例如res/raw/和您的证书)。在该源集中创建一个AndroidManifest.xml文件,其中包含一个只有android:networkSecurityConfig属性而没有其他内容的<application>元素。
然后您就完成了。
为此变体构建将包含您的源集,合并android:networkSecurityConfig属性,并利用与其相关联的资源。其他变体的构建将忽略此源集,这样您就没有网络安全配置。

5
除此之外,AndroidManifest.xml 文件实际上并不是每个构建变体都需要的。如果你的 network-security-config 文件在建议的适当文件夹结构中(例如:/app/src/debug/res/xml/network_security_config.xml),那么应用程序将自动使用和应用它。 - sschmitz
@CommonsWare - AndroidManifest.xml 是否只应包含以下内容<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.xxx"> </manifest> - Prashanth
@Prashanth 那应该就足够了。我不记得你是否需要 package 属性(因为这将由合并过程提供)。 - CommonsWare
@CommonsWare - 谢谢!我只需要在main/res/src/xml中拥有network_security_config.xml文件,而我的主要AndroidManifest.xml文件不需要在application标签中包含android:networkSecurityConfig吗?如果这是正确的,请告诉我。 谢谢 - Prashanth
1
@Prashanth:这里提出的问题特别是为了将这些内容放在main中,而是让它成为特定构建变体的一部分。 - CommonsWare

-1

-1

你可以在src文件夹内创建build_variant文件夹,并将你的network_config文件放在其中

以下是不同build_variant使用不同图标的示例。我们也可以用同样的方式处理network_config文件。

/src/build_variant/res/xml/network_security_config.xml

Exmaple


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接