FLutter 中的环境变量

问题描述 投票:0回答:1

我正在使用 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}" />
android flutter gradle google-maps-api-3
1个回答
0
投票

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-8b145ed4285dhttps:// itnext.io/flutter-3-7-and-a-new-way-of-defining-compile-time-variables-f63db8a4f6e2

© www.soinside.com 2019 - 2024. All rights reserved.