使用resValue生成API密钥报错:无法识别item标签类型
问题解决方法
错误原因
你遇到的资源合并错误,是因为resValue指定的类型写错了——Android资源系统里的字符串类型是小写的string,不是Java里的String。这会导致生成的gradleResValues.xml里出现无效的type="String"属性,资源合并工具无法识别。
修复步骤
修正local.properties配置
在项目根目录的local.properties里添加API密钥:API_KEY=wowowow修改app模块的build.gradle配置
先读取local.properties里的密钥,再用正确的类型生成资源:// 在build.gradle(app)文件顶部添加读取逻辑 def localProperties = new Properties() localProperties.load(rootProject.file("local.properties").newDataInputStream()) def apiKey = localProperties.getProperty("API_KEY", "") // 第二个参数是默认值,防止密钥为空 android { // ... 其他配置 buildTypes { debug { // 用小写的"string"作为类型 resValue "string", "api_key", apiKey // buildConfigField可以正常使用,和resValue不冲突 buildConfigField "String", "API_KEY", "\"${apiKey}\"" } release { minifyEnabled true // 同样配置release环境的resValue resValue "string", "api_key", apiKey buildConfigField "String", "API_KEY", "\"${apiKey}\"" } } }重新构建项目
执行Clean Project再Rebuild Project,生成的gradleResValues.xml里的item会变成正确的格式:<item name="api_key" type="string">wowowow</item>
关于build文件夹的警告
这个提示是正常的,build目录下的所有文件都是构建工具自动生成的,绝对不要手动编辑。只要修改build.gradle里的配置,重新构建就会自动更新这些文件,不用管这个警告。
内容的提问来源于stack exchange,提问作者Jjol_twi
相关产品推荐
相关产品推荐

