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合并规则和资源排除功能:
移除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>排除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
相关产品推荐
相关产品推荐

