我正在使用flutter_dotenv[ https://pub.dev/packages/flutter_dotenv]包并定义了一个.env文件来定义我的环境变量。但是为了使用谷歌地图,我还必须在AndroidManifest.xml文件中使用 maps apikey 。是否可以从包的.env文件中读取映射 apikeyflutter_dotenv而不是在AndroidManifest.xml文件中对 apikey 进行硬编码?
lor*_*vcs 21
以下步骤使我能够从同一个.env文件中的 flutter 代码、android 代码和 ios 代码访问我的环境变量:
1.通过添加到项目文件中来安装flutter_config包,pubspec.yaml如下所示
dependencies:
flutter_config: ^1.0.8
Run Code Online (Sandbox Code Playgroud)
.env2.在项目的根目录创建一个文件并向其中添加环境变量
GOOGLE_MAPS_API_KEY=googlemapsapikey
FABRIC_ID=abcdefgh
Run Code Online (Sandbox Code Playgroud)
3.在主函数中初始化插件
import 'package:flutter_config/flutter_config.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized(); // Required by FlutterConfig
await FlutterConfig.loadEnvVariables();
runApp(MyApp());
}
Run Code Online (Sandbox Code Playgroud)
4.现在在 dart 代码中的任何位置访问环境变量
import 'package:flutter_config/flutter_config.dart';
FlutterConfig.get('FABRIC_ID')
Run Code Online (Sandbox Code Playgroud)
首先,您需要手动将插件应用到您的应用程序,从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 地图 api 密钥,例如
`<meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/GOOGLE_MAPS_API_KEY" />`
Run Code Online (Sandbox Code Playgroud)
您还可以访问 gradle 文件和 Java/Kotlin 代码中的环境变量。有关更多详细信息,请参阅文档
AppDelegate.swift6.从项目的 ios 文件中访问您的 env 变量:在我的例子中,我需要从类似的位置访问地图 api 密钥
import flutter_config
FlutterConfigPlugin.env(for: "GOOGLE_MAPS_API_KEY")
Run Code Online (Sandbox Code Playgroud)
还可以从 Obj-C 类、构建设置和 Info.plist 访问环境变量。有关更多详细信息,请参阅文档
当构建要发布的 apk 时,R8 代码压缩器会混淆包含所有 env 变量的 BuildConfig 类,从而导致所有 env 变量为 null。为了防止这种情况,必须执行以下操作:
-keep class com.yourcompany.app.BuildConfig { *; }
其中 com.yourcompany.app 应替换为您的应用程序的包名称。
下面的视频很好地解释了如何从 Flutter 中的 .env 文件将 API 密钥加载到 AndroidManifest.xml。
这里的变化是,我们需要添加一个不同的插件才能使其工作,并按照视频教程中提到的步骤进行操作。
插件 https://pub.dev/packages/flutter_config
视频 https://www.youtube.com/watch?v=OtkrNQxJzBQ
Github https://github.com/ByneappLLC/flutter_config/blob/master/doc/ANDROID.md
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |