Flutter:如何在Gradle脚本中使用dart-define变量

5m1hhzi4  于 2023-03-09  发布在  Flutter
关注(0)|答案(1)|浏览(425)

为flutter应用创建集成测试时,如何通过gradle脚本传递dart-define变量。
根据Flutter文档,为了构建一个工具测试apk(以及稍后将其上传到Firebase测试实验室并进行测试),我们需要直接使用gradlew命令,如下所示:

pushd android
flutter build apk
./gradlew app:assembleAndroidTest
./gradlew app:assembleDebug -Ptarget=integration_test/<name>_test.dart
popd

此处未指定如何将我们正在使用的--dart-define标志的内容从flutter端flutter run传递到gradlew命令。

1zmg4dgp

1zmg4dgp1#

flutter dart-define标记被编码为base64,并作为逗号分隔的字段传递给gradle,参数名为-Pdart-defines。因此,我们可以利用它手动传递dart-define变量
假设您的dart-define标志为environment=staging
然后在正常的Flutter运行中,你将这样使用它。

flutter run --dart-define environment=staging

要通过gradlew命令传递此字符串,请将其转换为base64编码字符串,并按如下方式传递。
environment=staging的Base64编码字符串为ZW52aXJvbm1lbnQ9c3RhZ2luZw==
所以用

./gradlew app:assembleDebug -Ptarget=integration_test/<name>_test.dart -Pdart-defines="ZW52aXJvbm1lbnQ9c3RhZ2luZw=="

如果您有多个dart定义,添加它们时用逗号分隔。(注意标记是-Pdart-defines-(define s对此进行了说明))

./gradlew app:assembleDebug -Ptarget=integration_test/<name>_test.dart -Pdart-defines="ZW52aXJvbm1lbnQ9c3RhZ2luZw==,ZW1haWw9bXllbWFpbEBlbWFpbC5jb20="

相关问题