You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Android构建时如何忽略指定文件与代码行?

解决React Native Android构建时忽略networkSecurityConfig配置的方法

方法1:手动移除(临时场景适用)

  • 打开android/app/src/main/AndroidManifest.xml,直接删除android:networkSecurityConfig="@xml/network_security_config"这一行
  • 找到android/app/src/main/res/xml/network_security_config.xml文件,直接删除

方法2:Gradle脚本自动处理(保留源码但构建时移除)

如果需要保留源码文件,仅在构建过程中移除配置和文件,可以在app模块的build.gradle(或build.gradle.kts)中添加以下脚本:

Groovy版本(build.gradle)

android {
    // 原有配置...

    applicationVariants.all { variant ->
        variant.preBuild.doLast {
            // 移除AndroidManifest中的networkSecurityConfig属性
            def manifestFile = file("${projectDir}/src/main/AndroidManifest.xml")
            def updatedManifest = manifestFile.text.replaceAll(/android:networkSecurityConfig="@xml\/network_security_config"/, '')
            manifestFile.write(updatedManifest)

            // 删除network_security_config.xml文件
            def configFile = file("${projectDir}/src/main/res/xml/network_security_config.xml")
            if (configFile.exists()) {
                configFile.delete()
            }
        }
    }
}

Kotlin版本(build.gradle.kts)

android {
    // 原有配置...

    applicationVariants.all {
        preBuild.doLast {
            val manifestFile = file("${projectDir}/src/main/AndroidManifest.xml")
            var updatedManifest = manifestFile.readText()
            updatedManifest = updatedManifest.replace(Regex("android:networkSecurityConfig=\"@xml/network_security_config\""), "")
            manifestFile.writeText(updatedManifest)

            val configFile = file("${projectDir}/src/main/res/xml/network_security_config.xml")
            if (configFile.exists()) {
                configFile.delete()
            }
        }
    }
}

方法3:Manifest合并+资源排除(优雅无源码修改)

这种方式无需修改原始源码,依赖Android构建工具的Manifest合并规则和资源排除功能:

  1. 移除Manifest中的属性
    打开android/app/src/main/AndroidManifest.xml,先在根标签添加tools命名空间,再给application标签添加tools:remove属性:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"> <!-- 新增命名空间 -->
    
        <application
            android:name=".MainApplication"
            android:label="@string/app_name"
            android:icon="@mipmap/ic_launcher"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:allowBackup="false"
            android:theme="@style/AppTheme"
            android:networkSecurityConfig="@xml/network_security_config"
            tools:remove="android:networkSecurityConfig"> <!-- 新增移除属性 -->
            <!-- 其他内容 -->
        </application>
    </manifest>
    
  2. 排除network_security_config.xml文件
    在app模块的build.gradle(或build.gradle.kts)中添加资源排除配置:

    Groovy版本

    android {
        sourceSets {
            main {
                res {
                    exclude 'xml/network_security_config.xml'
                }
            }
        }
    }
    

    Kotlin版本

    android {
        sourceSets {
            main {
                res {
                    exclude("xml/network_security_config.xml")
                }
            }
        }
    }
    

内容的提问来源于stack exchange,提问作者Younis Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 07:19:57