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

rks48beu  于 2023-05-19  发布在  Flutter
关注(0)|答案(3)|浏览(271)

我刚刚启动了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文件。

igetnqfo

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

t0ybt7op

t0ybt7op2#

我知道现在很晚了但这能帮到别人,
只需键入:

<meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="${API_KEY}" />

请参阅YouTube视频以了解更多解释:
https://www.youtube.com/watch?v=X8lYNW_Or2o
最好的问候

相关问题