gpt4 book ai didi

android - 在flutter中从.env文件加载api key 到AndroidManifest.xml

转载 作者:行者123 更新时间:2023-12-03 13:26:45 38 4
gpt4 key购买 nike

我正在使用 flutter_dotenv [ https://pub.dev/packages/flutter_dotenv]包并定义一个 .env文件来定义我的环境变量。但是为了使用谷歌地图,我还必须在 AndroidManifest.xml 中使用 map apikey文件。是否可以从 .env 读取 map apikey flutter_dotenv 的文件打包而不是硬编码 AndroidManifest.xml 中的 apikey文件?

最佳答案

以下步骤使我能够从同一个 .env 的 flutter 代码、android 代码和 ios 代码中访问我的 env 变量文件 :
1.安装包flutter_config通过添加到您项目的 pubspec.yaml文件如下

dependencies:
flutter_config: ^1.0.8
2.创建 .env项目根目录下的文件并将环境变量添加到其中
GOOGLE_MAPS_API_KEY=googlemapsapikey
FABRIC_ID=abcdefgh
3.在你的主函数中初始化插件
import 'package:flutter_config/flutter_config.dart';

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

runApp(MyApp());
}
4.现在在你的飞镖代码中的任何地方访问你的环境变量
import 'package:flutter_config/flutter_config.dart';

FlutterConfig.get('FABRIC_ID')
  • 访问项目的 android 文件中的环境变量。

  • 首先,您需要手动将插件应用到您的应用程序,来自 android/app/build.gradle :
    正下方 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"添加以下行: apply from: project(':flutter_config').projectDir.getPath() + "/dotenv.gradle"在我的情况下,我需要访问 AndroidManifest.xml 中的 google maps api key 像这样的文件
    `<meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/GOOGLE_MAPS_API_KEY" />`
    您还可以在您的 gradle 文件和 Java/Kotlin 代码中访问您的环境变量。更多详情请参阅 docs
    6.从您的项目 ios 文件中访问您的环境变量:
    在我的情况下,我需要从 AppDelegate.swift 访问 maps api key 喜欢
    import flutter_config
    FlutterConfigPlugin.env(for: "GOOGLE_MAPS_API_KEY")
    它还可以从您的 Obj-C 类、build设置和 Info.plist 访问您的环境变量。更多详情请参阅 docs
    构建发布版本
    在构建您的 apk 以供发布时,R8 代码收缩器会混淆 BuildConfig 类,该类包含所有 env 变量,从而导致所有 env 变量为空。为了防止这种情况,必须执行以下操作:
  • 将文件 android/app/proguard-rules.pro 添加到您应用的项目中。
  • 将以下行添加到新创建的 proguard-rules.pro 文件中:
  • -keep class com.yourcompany.app.BuildConfig { *; }其中 com.yourcompany.app 应替换为您的应用程序包名称。

    关于android - 在flutter中从.env文件加载api key 到AndroidManifest.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57587190/

    38 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com