如何在Android、iOS或Flutter中安全使用Google Maps API密钥...

作者:API传播员 · 2025-12-18 · 阅读时间:4分钟

当您开发 Android、iOS 或 Flutter 应用时,确保 Google Maps API 密钥的安全性至关重要。API 密钥不应直接暴露在版本控制系统中,但您仍需在本地开发环境和持续集成(CI)环境中安全地引用它们。本文将重点介绍如何在代码中安全地引用这些密钥。


如何在 Android 中安全使用 Google Maps API 密钥

根据 Google 官方文档,为了安全存储 API 密钥,建议使用 local.properties 文件。如果项目中尚未包含该文件,可以在 Android 项目的根目录下创建它,并确保将其添加到 .gitignore 文件中以避免被版本控制工具跟踪。

local.properties 文件中添加如下内容(请勿使用单引号或双引号包裹密钥值):

googleMapsApiKey=YOUR_GOOGLE_MAPS_API_KEY_STRING_VALUE

接下来,在 app 目录下的 build.gradle 文件中定义变量,以便在本地和 CI 环境中使用:

def localProperties = new Properties()
localProperties.load(new FileInputStream(rootProject.file("local.properties")))
def googleMapsApiKey = localProperties.getProperty('googleMapsApiKey')
if (googleMapsApiKey == null) {
    googleMapsApiKey = System.getenv("GOOGLE_MAPS_API_KEY_ENVIRONMENT_VARIABLE")
}

然后,将密钥添加到 defaultConfigmanifestPlaceholders 中:

manifestPlaceholders = [googleMapsApiKey: googleMapsApiKey]

最后,在 AndroidManifest.xml 文件中引用该密钥:

通过上述步骤,您可以安全地在 Android 项目中使用 Google Maps API 密钥。


如何在 iOS 中安全使用 Google Maps API 密钥

在 iOS 项目中,推荐使用 Xcode 的构建配置文件来管理 API 密钥。您需要在项目目录中创建两个配置文件:Release.xcconfigDebug.xcconfig

创建配置文件

  1. 在 Xcode 中选择 File > New > File...
  2. 在“其他”部分选择“配置设置文件”。
  3. 将文件保存到项目目录中。

对于 Flutter 项目,可以将这些文件添加到 ios/Flutter 目录中。

配置密钥

Debug.xcconfig 文件中设置实际的 API 密钥(请勿使用单引号或双引号包裹密钥值):

GOOGLE_MAPS_API_KEY=YOUR_GOOGLE_MAPS_API_KEY_STRING_VALUE

Release.xcconfig 文件中引用环境变量:

GOOGLE_MAPS_API_KEY=$(GOOGLE_MAPS_API_KEY_ENVIRONMENT_VARIABLE)

在项目中引用密钥

Info.plist 文件中引用配置文件中的变量:

com.google.android.geo.API_KEY
$(GOOGLE_MAPS_API_KEY)

最后,在 AppDelegate.swift 文件中使用以下代码引用密钥:

GMSServices.provideAPIKey(Bundle.main.object(forInfoDictionaryKey: "googleMapsApiKey") as? String ?? "")

通过以上步骤,您可以在 iOS 项目中安全地使用 Google Maps API 密钥。


总结

需要注意的是,无论采取何种措施,API 密钥最终都会出现在应用程序的二进制文件中。虽然无法完全防止恶意用户获取密钥,但通过本文介绍的方法,您可以显著提高密钥的安全性。

此外,Android 和 iOS 应用通常使用相同的 API 密钥,因此确保两端的安全性同样重要。您还可以探索其他替代方案,例如使用 Cocoapods 密钥管理工具,或者在极端情况下将密钥直接保留在源代码中。


附加知识库

更新: 从 Flutter 2.5.3 开始,新增了一个名为 --dart-define 的功能,允许在构建项目时直接为 Android 和 iOS 设置密钥和其他敏感信息。您可以参考相关文档了解更多细节。

原文链接: http://tech.appunite.com/blog/how-to-securely-use-google-maps-api-key-in-android-i-os-or-flutter-project