Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从颤振中的.env文件将api密钥加载到AndroidManifest.xml_Android_Flutter - Fatal编程技术网

从颤振中的.env文件将api密钥加载到AndroidManifest.xml

从颤振中的.env文件将api密钥加载到AndroidManifest.xml,android,flutter,Android,Flutter,我正在使用flatter\u dotenv[打包并定义一个.env文件来定义我的环境变量。但是要使用google地图,我还必须在AndroidManifest.xml文件中使用maps apikey。是否可以从flatter\u dotenv包的文件中读取maps apikey,而不是在AndroidManifes中硬编码apikeyt、 xml文件?下面的视频很好地解释了如何从flatter中的.env文件将API密钥加载到AndroidManifest.xml 这里的变化是,我们需要添加一个

我正在使用
flatter\u dotenv
[打包并定义一个
.env
文件来定义我的环境变量。但是要使用google地图,我还必须在
AndroidManifest.xml
文件中使用maps apikey。是否可以从
flatter\u dotenv
包的
文件中读取maps apikey,而不是在
AndroidManifes中硬编码apikeyt、 xml
文件?

下面的视频很好地解释了如何从flatter中的.env文件将API密钥加载到AndroidManifest.xml

这里的变化是,我们需要添加一个不同的插件使其工作,并遵循视频教程中提到的步骤

插件

录像带

Github

以下步骤使我能够从相同的
.env
文件中访问颤振代码、android代码和ios代码中的环境变量:

1.通过添加到项目的
pubspec.yaml
文件来安装包,如下所示

dependencies:
  flutter_config: ^1.0.8
2.在项目根目录下创建一个
.env
文件,并向其中添加您的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.现在在dart代码中的任何位置访问环境变量

import 'package:flutter_config/flutter_config.dart';

FlutterConfig.get('FABRIC_ID')
  • 在项目的android文件中访问环境变量
  • 首先,您需要手动将一个插件应用到您的应用程序,从
    android/app/build.gradle
    : 右下方
    适用于:“$flatterroot/packages/flatter\u tools/gradle/flatter.gradle”
    添加以下行:
    apply from:project(':flatter_config').projectDir.getPath()+“/dotenv.gradle”

    在我的例子中,我需要访问
    AndroidManifest.xml
    文件中的GoogleMapsAPI键

    `<meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/GOOGLE_MAPS_API_KEY" />`
    
    也可以从Obj-C类、构建设置和Info.plist访问环境变量。有关更多详细信息,请参阅

    构建发布版本 在构建apk以供发布时,R8代码收缩器会混淆BuildConfig类,该类包含所有环境变量,从而导致所有环境变量为null。为防止出现这种情况,必须执行以下操作:

  • 将文件android/app/proguard-rules.pro添加到应用程序的项目中
  • 将以下行添加到新创建的proguard-rules.pro文件中:
  • -keep class com.yourcompany.app.BuildConfig{*;}


    其中com.yourcompany.app应替换为应用程序的软件包名称。

    您可以使用dotenv软件包访问flift应用程序中的环境变量

    https://pub.dev/packages/dotenv
    

    但它能在你的android和ios文件中提供变量吗?
    https://pub.dev/packages/dotenv