在 Android Studio 中,存在构建类型和风格的概念,您可以使用它们来获得所需的内容。构建类型是功能相同但调试代码不同的应用程序的不同版本。默认情况下,所有 Android Gradle 项目都有调试和发布构建类型。
风味是功能不同的应用版本;例如,您可以免费和付费。默认情况下,您的 Android Gradle 项目没有任何风格,但您可以添加它们。
在您进行构建时,构建类型和风格会组合在一起(形成所谓的变体);在此示例中,您可以有 freeDebug、freeRelease、paidDebug 和paidRelease 构建。
构建系统可让您轻松覆盖每种类型/风味/变体中的许多内容;您可以做的其中一件事是覆盖部分 AndroidManifest.xml 文件。构建系统在构建特定变体时将清单的不同合格位合并到一个主清单中。
有了这些背景,在您的情况下,您可能希望在应用的调试版本与发布版本中使用不同的 API 密钥。调试版本是您将在日常开发、调试和测试中使用的版本,而发布版本是您要部署给用户的版本。
为此,不要将 Google Maps API 密钥放入主应用的 AndroidManifest.xml 文件中的src/main;相反,添加两个新文件夹 src/debug 和 src/release 并在其中添加 stub AndroidManifest.xml 文件。不要在这些新清单中包含完整信息,而仅包含该特定变体所需的独特信息。您的源文件将如下所示:
您的src/debug/AndroidManifest.xml 文件将包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_DEV_KEY]" />
</manifest>
src/release/AndroidManifest.xml 会有这个:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_PROD_KEY]" />
</manifest>
重申一下,不要将任何 API 密钥放在 src/main/AndroidManifest.xml 文件中。
如果出于某种原因您不想使用构建类型来区分您可以设置开发和产品风格并以这种方式进行拆分;清单覆盖的工作方式相同。