You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter项目隐藏Google Maps API密钥遇异常,求合规替代方案

可行的Google Maps API密钥隐藏方案(Flutter)

方案1:修正local.properties配置流程

之前用local.properties失败,大概率是gradle没把变量同步到manifest,按以下步骤操作:

  • 在android/local.properties中添加密钥:
    MAPS_API_KEY=你的Google Maps密钥
    
  • 修改android/app/build.gradle,在android块的defaultConfig里添加:
    manifestPlaceholders = [maps_api_key: project.property("MAPS_API_KEY")]
    
  • 在AndroidManifest.xml中引用占位符:
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${maps_api_key}" />
    
  • 将local.properties加入.gitignore,避免提交到版本控制。

方案2:用gradle.properties存储密钥

  • 在android/gradle.properties中添加密钥:
    MAPS_API_KEY=你的Google Maps密钥
    
  • 同样在android/app/build.gradle的defaultConfig里配置:
    manifestPlaceholders = [maps_api_key: MAPS_API_KEY]
    
  • AndroidManifest.xml保持${maps_api_key}引用,最后把gradle.properties加入.gitignore。

方案3:系统环境变量注入

适合本地开发或CI/CD场景,完全不需要本地配置文件:

  • 在本地系统设置环境变量FLUTTER_MAPS_API_KEY(Windows通过系统属性添加,Mac/Linux用终端执行export FLUTTER_MAPS_API_KEY=你的密钥)。
  • 修改android/app/build.gradle:
    def mapsApiKey = System.getenv("FLUTTER_MAPS_API_KEY") ?: "可选的测试密钥"
    defaultConfig {
        manifestPlaceholders = [maps_api_key: mapsApiKey]
    }
    
  • AndroidManifest.xml引用方式不变。

方案4:Flutter层直接读取密钥(跨平台通用)

不需要修改原生配置,直接在Flutter侧处理:

  • 根目录创建.env文件,写入:
    MAPS_API_KEY=你的Google Maps密钥
    
  • 在pubspec.yaml添加依赖:
    dependencies:
      flutter_dotenv: ^5.1.0
    
  • 在main.dart初始化并读取密钥:
    import 'package:flutter_dotenv/flutter_dotenv.dart';
    
    void main() async {
      await dotenv.load(fileName: ".env");
      runApp(const MyApp());
    }
    
  • 传递密钥给Google Maps组件:
    GoogleMap(
      initialCameraPosition: const CameraPosition(target: LatLng(0, 0)),
      apiKey: dotenv.env['MAPS_API_KEY'],
    )
    
  • 将.env加入.gitignore。

内容的提问来源于stack exchange,提问作者Harun Jamal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:55:10