如何在 AndroidManifest.xml 中隐藏 API 密钥

S.R*_*jit 9 security android api-key flutter

我刚刚启动了Flutter 的Google 地图插件,它要求我将生成的 API 密钥插入AndroidManifest.xmlandroid/app/src/main/AndroidManifest.xml. 几分钟后,我将其提交到我的存储库,并立即收到来自 Google 和 Git 的警告,要求更改生成新密钥等(不知道你不应该这样做,所以我现在很清楚)。

之后,我开始寻找隐藏 API 密钥的方法。一种解决方案是使用Flutter 安全存储插件,但这仅在.dart文件内有帮助(我认为)。另一种方法是创建一个单独的文件并将其添加到 .gitignore,但是当我构建 APK 时,该文件是否也会被捆绑?

理想情况下,我想发布它,但我不希望密钥易于访问,那么如何在AndroidManifest.xml不使用明文的情况下将 API 密钥加载到文件中?我想避免使用后端,所以我想我可以手动散列它,然后在运行时取消散列,但我仍然不知道如何动态更改文件AndroidManifest.xml

Chr*_*ona 4

您无法混淆清单中存储的密钥,因为存储的(静态)值将直接由 Google Maps API 本身使用。为了保护您的密钥,请考虑在 GCP 控制台中添加限制,以便只有授权的客户端才能使用您的密钥。

有关更多详细信息,请参阅此链接:https://developers.google.com/maps/documentation/android-sdk/get-api-key#restrict_key

以下是有关保护 API 密钥的最佳实践的更多信息: https: //developers.google.com/maps/api-key-best-practices#api_key_table