执行npm run android时遇Android资源链接失败:<queries>元素异常
解决React Native构建时
<queries>标签导致的Android资源链接失败问题 问题原因
<queries>是Android API 30新增的包可见性配置标签,若你的Android构建工具链版本过低(Android Gradle Plugin <4.0.0、Build Tools <30.0.0),AAPT工具无法识别该标签,从而触发资源链接失败。
解决方案
1. 升级Android Gradle Plugin(AGP)
打开android/build.gradle文件,更新com.android.tools.build:gradle版本至4.0.0及以上:
buildscript { dependencies { classpath("com.android.tools.build:gradle:4.2.2") // 示例版本,可按需选择更高兼容版本 // 其他依赖项... } }
2. 对应升级Gradle版本
AGP与Gradle版本需匹配,AGP 4.0.0+对应Gradle 6.1.1+。打开android/gradle/wrapper/gradle-wrapper.properties,修改distributionUrl:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
3. 升级Build Tools版本
打开android/app/build.gradle,将buildToolsVersion设置为30.0.0及以上:
android { buildToolsVersion "30.0.3" // 其他配置... }
4. 确保compileSdkVersion不低于30
同样在android/app/build.gradle中:
android { compileSdkVersion 30 // 其他配置... }
临时 workaround(不推荐)
如果暂时无法升级构建工具,可在AndroidManifest.xml中用tools:node="remove"移除自动合并的<queries>标签,但这可能导致部分依赖包的功能异常:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <!-- 移除自动生成的queries标签 --> <queries tools:node="remove" /> <!-- 其他manifest内容... --> </manifest>
执行完上述步骤后,重新运行npm run android即可完成构建。
内容的提问来源于stack exchange,提问作者abhishek_maran
相关产品推荐
相关产品推荐

