我正在使用 Google 地图开发 Flutter 项目。我有一个 API 密钥,根据文档,我们不应将其直接放入 AndroidManifest.xml 或 build.grafle 文件中。
我在 github 项目中遇到了这段代码,但我无法真正理解它。我的 gradle 不太好。
def dartEnvironmentVariables = []
if (project.hasProperty('dart-defines')) {
dartEnvironmentVariables = project.property('dart-defines')
.split(',')
.collectEntries { entry ->
def pair = new String(entry.decodeBase64(), 'UTF-8').split('=')
[(pair.first()): pair.last()]
}
}
我的问题是,
dart-defines
应该位于项目结构中的哪个位置。我在github项目中找不到任何内容。
这样的文件会是什么样子?
我想将 Goole Maps API KEY 存储在那里,以便我可以在 build.gradle 文件中使用它,如下所示:
manifestPlaceholders.ANDROID_GOOGLE_MAPS_API_KEY = dartEnvironmentVariables.ANDROID_GOOGLE_MAPS_API_KEYs
然后在AndroidManifest.xml中:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${ANDROID_GOOGLE_MAPS_API_KEY}" />
dart-defines
在命令行中传递,
所以
flutter build apk --dart-defines ANDROID_GOOGLE_MAPS_API_KEY=your_key
或者
flutter run --dart-defines ANDROID_GOOGLE_MAPS_API_KEY=your_key
从 Flutter 3.19 开始,您可以创建一个
config.json
文件,如下所示:
{
"ANDROID_GOOGLE_MAPS_API_KEY": "your_key"
}
然后以类似的方式访问它,但使用
dart-define-from-file
,
例如。
flutter build apk --dart-define-from-file=config.json
参见:https://itnext.io/flutter-1-17-no-more-flavors-no-more-ios-schemas-command-argument-that-solves-everything-8b145ed4285d和https:// itnext.io/flutter-3-7-and-a-new-way-of-defining-compile-time-variables-f63db8a4f6e2