Android 对Google API的API密钥进行版本控制安全吗';s

Android 对Google API的API密钥进行版本控制安全吗';s,android,version-control,api-key,google-developers-console,Android,Version Control,Api Key,Google Developers Console,我有一个开源的android应用程序。 例如,为了使用新的Awareness API,我需要有我的应用程序将要使用的API密钥 这是通过提供包名和证书的SHA-1生成的 存储它的地方是Manifest.xml,当然它是版本控制的 这安全吗?因为我的项目是开源的,任何人都可以看到这个密钥,但他真的可以使用它吗?为什么? 另外,上面的说明可以找到而不是版本控制,我将把它放在一个单独的XML文件中,然后放在.gitignore中。您可以在字符串资源文件中引用XML文件,而不是使用硬编码的API键,而是

我有一个开源的android应用程序。 例如,为了使用新的Awareness API,我需要有我的应用程序将要使用的API密钥

这是通过提供包名和证书的SHA-1生成的

存储它的地方是
Manifest.xml
,当然它是版本控制的

这安全吗?因为我的项目是开源的,任何人都可以看到这个密钥,但他真的可以使用它吗?为什么?


另外,上面的说明可以找到

而不是版本控制,我将把它放在一个单独的XML文件中,然后放在
.gitignore
中。您可以在字符串资源文件中引用XML文件,而不是使用硬编码的API键,而是使用与API键对应的字符串资源,如
@String/API_Key
。这是一种更安全的方法。这样,您就不会打开密钥供公众访问,应用程序仍然具有它所需的相应数据。

我明天会检查它。谢谢你的回答!我同意你的解决方案。现在它可以工作了,尽管我真的很想知道sha-1背后的逻辑,而且如果在非公共源代码控制的情况下公开api密钥是可以的(稍微偏离Q),那么这个密钥是否仍然可以被反编译应用程序的人检索到呢?如果是这样的话,考虑到实际的apk比源代码更容易被破坏,这真的有很多意义吗?是的,字符串在二进制文件中是可读的,在apk中的独立文件中也是可读的。如果密钥位于独立文件中,如何管理生成过程?密钥是否必须存在于生成机器上(并且仅存在于生成机器上)?