【发布时间】:2020-04-15 19:36:36
【问题描述】:
我刚刚为 Flutter 启动了 Google Maps plugin,它要求我将生成的 API 密钥插入到 android/app/src/main/AndroidManifest.xml 的 AndroidManifest.xml 文件中。片刻之后,我将它提交到我的仓库并立即收到来自 Google 和 Git 的警告,要求更改生成新密钥等(不知道你不应该这样做,所以我现在很清楚)。
之后,我开始寻找隐藏 API 密钥的方法。一种解决方案是使用Flutter Secure Storage plugin,但这只有助于(我认为)在.dart 文件中。另一种是创建一个单独的文件并将其添加到 .gitignore 但是当我构建 APK 时,该文件不会被捆绑吗?
理想情况下,我想发布它,但我不希望密钥易于访问,那么如何在不使用纯文本的情况下将 API 密钥加载到 AndroidManifest.xml 文件中?我想避免使用后端,所以我想我可以手动散列它,然后在运行时取消散列,但我仍然不知道如何动态更改 AndroidManifest.xml 文件。
【问题讨论】:
-
不是直接在应用程序中为 3rd 方 api 定位这些服务包装器,而是考虑一个不同的拓扑,其中位于服务器上的服务与应用程序分开。它的工作量更大,但由于您控制服务器,因此没有任何关于密钥的安全问题。
-
@RobertRowntree 我确实说过我想避免使用后端,即服务器。我知道可以通过 firebase 实现,但我仍在寻找替代方案
标签: android security flutter api-key