在 build.gradle 中访问令人羡慕的值

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

我正在构建一个具有多种风格的 Flutter 应用程序(类似于 使用多个 env 文件),并且我需要访问我的

app/build.gradle
文件中的 Envied 类,如下面的代码所示,以获取 google_maps_api_key - (firebaseAndroidApiKeyDev )。我该如何解决这个问题?

 productFlavors {
        dev {
            dimension "app"
            resValue "string", "app_name", "App Dev"
            resValue "string", "google_maps_api_key", firebaseAndroidApiKeyDev  
        }
        prod {
      //More flavors configs....

我浏览了羡慕的文档并向GPT询问了这个问题,但仍然不知道如何解决这个问题。我也在他们的存储库中提出了一个问题(在 build.gradle 中访问令人羡慕的值)。

StackOverflow 中也有类似的问题:如何读取属性文件并使用项目 Gradle 脚本中的值?如何在 build.gradle 文件中包含附加配置文件如何创建文件并在环境中设置变量并获取 build.gradle 中文件内的数据? 但它们严格指的是开发的原生 Android 端,我需要访问 Flutter 生成的类。

flutter environment-variables build.gradle mobile-development
2个回答
0
投票

要以本机方式访问 flutter 代码中的某些键,您可以使用(以及其他一些选项)包 flutter_config。 在包的描述中有一个记录良好的示例,但总的来说:

1 - 使用键值结构创建一个 .env 文件(将其包含在 .gitignore 中,这样就不会公开共享):

API_URL=https://myapi.com
FABRIC_ID=abcdefgh

2 - 在您的

main.dart
中初始化它:

import 'package:flutter_config/flutter_config.dart';

void main() async {
   WidgetsFlutterBinding.ensureInitialized(); // Required by FlutterConfig
   await FlutterConfig.loadEnvVariables();

   runApp(MyApp());
}

3 - 在 flutter 级别,您可以使用以下方式访问这些变量:

import 'package:flutter_config/flutter_config.dart';

FlutterConfig.get('FABRIC_ID') // returns 'abcdefgh'

4 - 在本机级别,您可以访问 (Android):

4.1 - 在

apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
中的
build.gradle
行之后,添加:

apply from: project(':flutter_config').projectDir.getPath() + "/dotenv.gradle"

这一行在android中配置插件

4.2 - 将其加载到

build.gradle
:

defaultConfig {
     applicationId project.env.get("APP_ID")
}

欲了解更多解释文档,请访问:


-1
投票

您不需要在 build.gradle 中添加 api key。在

android/app/src/
中创建flavors文件夹就像

在 android/app/scr/main/AndroidManifest.xml 中定义 api 密钥

<manifest ...
  <application ...
    <meta-data android:name="com.google.android.geo.API_KEY"
               android:value="@string/map_api_key"/>

在每个文件夹内创建一个 res 文件夹,并在 res 文件夹内创建值,然后创建 strings.xml

在 strings.xml 中添加地图 api 密钥

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="map_api_key">12345678910</string>
</resources>

这应该获取不同口味的相关密钥

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