在Android Studio中使用Gradlepipe理Google Maps API密钥
我知道Gradlefunction强大,我想pipe理Google Maps的开发/生产API密钥
目前,我总是需要手动评论一行,取消注释另一行,使其工作。 有一种方法可以在Gradle中自动执行一些自定义的发行版configuration吗?
<!-- MapView v2 API --> <uses-library android:name="com.google.android.maps" /> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_DEV_KEY]" /> <!-- PROD <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_PROD_KEY]" /> -->
由于您正在使用gradle,因此您可以执行以下操作:
的build.gradle
android { .. .. ... buildTypes { debug { resValue "string", "google_maps_api_key", "[YOUR DEV KEY]" } release { resValue "string", "google_maps_api_key", "[YOUR PROD KEY]" } } }
并在你的AndroidManifest.xml中
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="@string/google_maps_api_key"/>
这样你只有一个AndroidManifest.xml,你可以根据你的构buildtypes来设置值。 希望这可以帮助。
您可以通过清单占位符function来实现: http : //tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Placeholder-support
在build.gradle文件中:
buildTypes { debug { manifestPlaceholders = [ google_map_key:"your_dev_key"] } release { manifestPlaceholders = [ google_map_key:"prod_key"] } }
然后显示:
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="${google_map_key}"/>
对于不同风格的不同密钥,这是确切的事情,这是比使用string资源更清洁的解决scheme。
在Android Studio中(使用版本0.8.11进行检查),您可以将Google地图活动(New-> Google-> Google Maps Activity)添加到您的项目中,Android Studio将为您生成必要的文件,只需插入您的密钥即可。 还有指示生成。 在debug / res / values /和release / res / values文件夹中查找google_maps_api.xml文件。
在Android Studio中,有构buildtypes和风味的概念,您可以使用这些来获得您所需要的内容。 构buildtypes是应用程序的不同版本,function相同,但debugging代码可能不同。 默认情况下,所有Android Gradle项目都具有debugging版本和发布版本types。
风味是你的应用程序的function不同的版本; 例如,您可以免费和付费。 默认情况下你的Android Gradle项目没有任何风格,但你可以添加它们。
构buildtypes和风味在构build时被组合(称为变体 ); 在这个例子中,你可以有freeDebug,freeRelease,paidDebug和paidRelease构build。
构build系统可以轻松地覆盖每种types/风味/变体中的许多事物; 你可以做的一件事就是覆盖AndroidManifest.xml文件的一部分。 构build系统在构build特定变体时将不同的符合条件的清单合并到一个主清单中。
有了这个背景,在你的情况下,你可能想要在你的应用的debugging版本与发行版本中有一个不同的API密钥。 debugging版本是您在日常开发,debugging和testing中使用的版本,发行版本是您要部署给用户的版本。
为此, 请勿将Google Maps API密钥放在src/main
的主应用的AndroidManifest.xml文件中; 相反,添加两个新的文件夹, src/debug
和src/release
并在那里添加存根 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>
重申一下,不要在src/main/AndroidManifest.xml
文件中放置任何API密钥。
如果由于某种原因,你不想使用构buildtypes来区分,你可以设置dev和prod的味道,并拆分它,而不是; 清单覆盖以相同的方式工作。
- GooglePlayServicesUtil.getErrorDialog为null
- 如何在Google Maps for Android API v2上显示我的位置
- Google Maps API v2:如何让标记点击?
- 如何使用Android地图API v2创build自定义形状的位图标记
- ScrollView内的Google Maps API v2 SupportMapFragment – 用户不能垂直滚动地图
- 如何在Android模拟器中下载Google Play服务?
- 如何使用Google Maps V2删除单个标记?
- 如何知道在使用SupportMapFragment时地图已准备好使用?
- “IBitmapDescriptorFactory未初始化”错误