文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android动态配置network_security_config

2023-09-01 09:10

关注

相信目前Android开发中,基本上网络请求都是使用https协议的了,这样对我们的数据安全有了一定的保障。但是通常在测试阶段,测试人员往往需要进行抓包测试,可以实时查看数据请求情况。这就需要我们需要区分好生产环境和测试环境的网络安全配置了。这时就需要我们用到network_security_config的文件配置了。
下面有三种方法实现这个需求:

第一种: debug-overrides

<network-security-config>    <base-config cleartextTrafficPermitted="true"/>    <debug-overrides>        <trust-anchors>            <certificates                overridePins="true"                src="system" />            <certificates                overridePins="true"                src="user" />        trust-anchors>    debug-overrides>network-security-config>

通过debug-overrides来实现debug打包时,信任用户的证书,即可以实现代理抓包。

第二种:利用 manifestPlaceholders

这个方法类似于打渠道包的原理,通过gradle来动态配置不同的network_security_config文件。

1、创建network_security_config_debug,network_security_config_release

network_security_config_debug :

<network-security-config>    <base-config cleartextTrafficPermitted="true">        <trust-anchors>            <certificates                overridePins="true"                src="system" />            <certificates                overridePins="true"                src="user" />        trust-anchors>    base-config>network-security-config>

network_security_config_release :

<network-security-config>    <base-config cleartextTrafficPermitted="false"/>network-security-config>

2、

在app模块的build.gradle文件中添加以下代码:

android {    ...    buildTypes {        debug {            ...            manifestPlaceholders = [                network_security_config: "@xml/network_security_config_debug"            ]        }        release {            ...            manifestPlaceholders = [                network_security_config: "@xml/network_security_config_release"            ]        }    }}

3、

在AndroidManifest.xml文件中添加以下代码:

<application    android:networkSecurityConfig="${network_security_config}"    ... >    ...application>

这样就可以动态配置network_security_config了。

第三种:resValue

其实这种方法,和第二种是异曲同工的方法,都是利用gradle进行动态编译配置,只不过写法不一样罢了。
首先都是需要和第二步那样创建network_security_config_debug,network_security_config_release两个文件。
然后在app模块的build.gradle文件中添加以下代码:

android {    ...    buildTypes {        debug {            ...           resValue "xml", "network_security_config", "@xml/network_security_config_debug"        }        release {            ...          resValue "xml", "network_security_config", "@xml/network_security_config_release"        }    }}

然后在AndroidManifest.xml文件中添加以下代码:

<application    ...   android:networkSecurityConfig="@xml/network_security_config"    ... >    ...application>

来源地址:https://blog.csdn.net/zengke1993/article/details/131306618

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯