多年前,Google指示开发人员将他们的Google地图密钥添加到gradle中的buildTypes。它看起来类似于以下内容:
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}"/>
有些开发人员甚至不会使用占位符并直接将Google Map键添加为String。今天,由于Firebase的出现,Google认为他们添加了不同的说明。
文档:https://developers.google.com/android/guides/google-services-plugin
新方法是将密钥添加到google-services.json文件中,该文件可以从firebase下载并添加到您的项目中。我的问题是,在Gradle中公开您的Google Maps API密钥是否存在安全问题?包含API密钥的新方法和较新的库试图避免将其添加到Gradle和/或清单中。这是巧合吗,还是有安全理由?
答案 0 :(得分:1)
为Google Maps Android API创建API密钥时,您必须设置包名称和SHA1指纹的限制。
https://developers.google.com/maps/documentation/android-api/signup#key-std-details
在gradle中,您公开了一个API密钥,但是您没有公开在Cloud开发人员控制台中应用的限制。这意味着如果有人窃取API密钥,他们就无法使用它,因为他们没有相同的SHA1指纹,他们无法知道您在开发者控制台中应用了什么限制。
从这个角度来看,包括Google地图的API密钥在gradle中的Android API是安全的。