我刚刚启动了Flutter的Google Maps plugin,它要求我将生成的API密钥插入到android/app/src/main/AndroidManifest.xml
中的AndroidManifest.xml
文件中。几分钟后,我把它提交到我的repo中,并立即收到了来自Google和Git的警告,要求更改生成一个新的密钥等(我不知道你不应该这样做,所以我现在很清楚)。
之后,我开始寻找隐藏API密钥的方法。一种解决方案是使用Flutter安全存储插件,但这只会在.dart
文件中有所帮助(我认为)。另一种方法是创建一个单独的文件并将其添加到.gitignore中,但当我构建APK时,该文件不会也被捆绑吗?
理想情况下,我想发布它,但我不希望密钥容易被访问,所以我如何在不使用明文的情况下将API密钥加载到AndroidManifest.xml
文件中?我想避免使用后端,所以我想我可以手动哈希它,然后在运行时取消哈希,但我仍然不知道如何动态更改AndroidManifest.xml
文件。
3条答案
按热度按时间igetnqfo1#
您无法混淆存储在Manifest中的密钥,因为存储的(静态)值将直接由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
t0ybt7op2#
我知道现在很晚了但这能帮到别人,
只需键入:
请参阅YouTube视频以了解更多解释:
https://www.youtube.com/watch?v=X8lYNW_Or2o
最好的问候
xxslljrj3#
看这里:Hide your api keys from your android manifest file with Flutter using local.properties。React Native也是如此。