懒得说废话了,简单来说就是保护写在程序中的APIKEY之类的敏感变量,提高反编译后的分析难度,同时避免直接push到远程仓库。

一、安装依赖

在项目根目录下的pubspec.yaml文件中添加envied库。

1
2
dependencies:
envied: ^1.1.1

然后运行下面的命令下载依赖。

1
flutter pub get

二、使用方式

1.准备相关文件

在项目根目录下新建一个名为 .env的文件。

1751599605141.png

然后在里面写入自己的敏感数据,书写格式:KEY=VALUE。比如:

1
DOUBAO_APIKEY=xxxxxxxxxxxx

然后再在lib目录下的任意位置新建一个dart文件,可以命名为env.dart,之后在文件中写入以下内容(这里依然拿上面的DOUBAO_APIKEY举例):

1
2
3
4
5
6
7
8
9
import 'package:envied/envied.dart';

part 'env.g.dart'; //一开始这里会报错,不用管,后面这个文件会自动生成

@Envied(path: '.env') //这里指定之前的.env文件
abstract class Env {
@EnviedField(varName: 'DOUBAO_APIKEY', obfuscate: true) //名称和.env文件中的保持一致,同时打开混淆
static final String doubaoApiKey = _Env.doubaoApiKey; //报错先不管
}

2.安装生成器

我们要利用envied_generator生成相关文件,并完成混淆,运行下面的命令安装:

1
dart pub add envied dev:envied_generator dev:build_runner

3.运行生成脚本

1
dart run build_runner build

运行成功后会有这样的提示

1751599748445.png

并且你能看到在env.dart旁边生成了一个env.g.dart文件,然后之前的报错就没有了。

1751599868179.png

4.使用密钥

当我们完成了密钥的混淆后,想在其他地方使用密钥的时候只需要这么写:

1
2
3
4
import '../utilis/env.dart'; //引入之前写的env.dart文件,这里的路径按照你自己的写


final apiKey = Env.doubaoApiKey;

三、非常重要!!!

一定别忘了写.gitignore,否则你就白干了,将.env文件和自动生成的env.g.dart文件添加进去。

1
2
*.env
env.g.dart