我对依赖于签名的谷歌地图密钥有类似的问题。我所做的是使用有条件地生成/复制资源到项目的 ant 脚本。您可以在 Eclipse 中的 Project>Properties>Builders 下包含 ant 脚本
如果您需要在代码中使用 DEBUG 值,您可以创建一个带有静态值的 java 文件,该文件也将有条件地包含在内。
请评论 ant 环境变量是否正常工作(执行脚本后,您可以在控制台中看到“构建类型:”消息)。
<project name="build-res">
<property name="conditional.resources.dir" value="myresources" />
<property name="keys_file" value="res/values/keys.xml" />
<target name="copy-release" if="${build.mode.release}" >
<property name="build.type" value="Release" />
<echo message="Build type: ${build.type}" />
<property name="google.maps.key" value="nanana-value-for-release" />
<copy file="${conditional.resources.dir}/Release.java" tofile="gen/com/example/project/BuildInfo.java" />
</target>
<target name="copy-debug" if="${build.mode.debug}">
<property name="build.type" value="Debug" />
<echo message="Build type: ${build.type}" />
<property name="google.maps.key" value="lalala-value-for-debug" />
<copy file="${conditional.resources.dir}/Debug.java" tofile="gen/com/example/project/BuildInfo.java" />
</target>
<target name="build-res" depends="copy-debug,copy-release">
<echo file="${keys_file}" message="<?xml version='1.0' encoding='utf-8'?><resources><string name='google_maps_key'>${google.maps.key}</string></resources>" />
</target>
</project>