我刚刚为Flutter启动了Google Maps plugin,它要求我将生成的API密钥插入AndroidManifest.xml
中的android/app/src/main/AndroidManifest.xml
文件中。片刻之后,我将其提交给我的仓库,并立即收到Google和Git的警告,要求更改以生成新密钥等(不知道您不应该这样做,所以我现在很清楚)。
[之后,我开始寻找隐藏API密钥的方法。一种解决方案是使用Flutter Secure Storage plugin,但是(我认为)只能在.dart
文件中提供帮助。另一种方法是创建一个单独的文件并将其添加到.gitignore,但是当我构建APK时,该文件也不会被捆绑吗?
理想情况下,我想发布它,但我不希望该密钥易于访问,因此如何在不使用纯文本的情况下将API密钥加载到AndroidManifest.xml
文件中?我想避免使用后端,所以我想我可以手动对其进行哈希处理,然后在运行时取消哈希处理,但是我仍然不知道如何动态更改AndroidManifest.xml
文件。
您无法混淆清单中存储的密钥,因为存储的(静态)值将直接由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