从颤振中的.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