Flutter项目中@string/GOOGLE_MAPS_API_KEY存储及转换方式问询
关于Flutter中Google Maps API密钥配置的疑问解答
1. @string/GOOGLE_MAPS_API_KEY的来源与存储位置
@string/GOOGLE_MAPS_API_KEY是Android项目的字符串资源,默认存储路径为android/app/src/main/res/values/strings.xml。但由于你要避免密钥硬编码进版本控制,不会手动在这个文件里写死密钥值——它的实际值是通过Gradle构建脚本动态注入的,构建完成后会存在于生成的临时资源文件中(无需手动编辑strings.xml)。
2. .env文件中的密钥如何转换为@string/GOOGLE_MAPS_API_KEY
整个流程通过Android端Gradle脚本读取.env文件,再动态生成对应的字符串资源,具体步骤如下:
第一步:准备.env文件
在Flutter项目根目录创建.env文件,写入密钥:GOOGLE_MAPS_API_KEY=你的实际Google Maps API密钥同时将
.env添加到项目的.gitignore文件中,防止密钥被提交到版本控制。第二步:配置Gradle读取并注入密钥
打开android/app/build.gradle文件,在android块的defaultConfig中添加动态生成字符串资源的代码:// 读取根目录的.env文件 def envFile = file("../../.env") def envProps = new Properties() if (envFile.exists()) { envProps.load(new FileInputStream(envFile)) } android { // 保留原有配置 defaultConfig { // 保留原有配置 // 动态生成@string/GOOGLE_MAPS_API_KEY资源 resValue "string", "GOOGLE_MAPS_API_KEY", envProps.getProperty("GOOGLE_MAPS_API_KEY", "") } }这段代码会在构建时读取.env文件中的密钥,自动生成对应的字符串资源,无需手动修改strings.xml。
第三步:在AndroidManifest.xml中引用
保持原有引用方式即可:<meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/GOOGLE_MAPS_API_KEY"/>
每次构建项目时,Gradle都会自动把.env里的密钥注入到@string/GOOGLE_MAPS_API_KEY中,既避免了硬编码,也不会把密钥提交到版本控制。
内容的提问来源于stack exchange,提问作者Pratyush
相关产品推荐
相关产品推荐

