繁体   English   中英

如何在嵌入在 Android 中的 Flutter 应用程序中使用 --dart-define

[英]How to use --dart-define in a Flutter app embdedded in Android

我正在将 Flutter 应用程序作为模块嵌入到现有 Android 应用程序中( https://flutter.dev/docs Isetup/add- to-app/android/project/)使用“--dart-define”来定义编译时常量。 尝试使用./gradlew -Ddart-define=myVal=Value没有任何运气。

在构建典型的 Flutter 应用程序时,我将使用flutter命令。 就我而言,我将继续使用gradlew来构建我的应用程序,目前还不清楚如何传入 --dart-define 常量。

如果您的项目依赖于 Android 存档 (AAR)。

您可以在命令行中传递dart-defines

flutter build aar --dart-define=myVal=Value

如果您的项目依赖于模块的源代码。

您可以在您的 android 宿主项目目录(或yourHostProject/yourFlutter/.android/Flutter/目录)中的gradle.properties中设置dart-define

--dart-define=myVal=Value 

解释

  • .android/Flutter/build.gradle脚本执行"$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"脚本。 执行flutter.gradle时,您的 dart 文件将被编译为原生代码。

  • flutter.gradle loads dart-defines from the .android/Flutter project instance ( flutter.gradle#731-L734 ) and then, use it ( flutter.gradle#L1091-L1093 ).

  • 要设置项目实例值,请将--dart-define=myVal=Value添加到gradle.properties中。 (如果您有多个gradle.properties文件,请考虑配置顺序( Gradle 文档中的 Gradle 属性)。

配置

在 android 工作室中,您可以编辑运行配置(按下“运行”按钮附近的下拉菜单 ->“编辑配置...”)并在那里定义变量(“附加运行参数:”行):

--dart-define="http_serv=http://10.0.2.2:42627/" --dart-define="websocket=ws://10.0.2.2:42627/websocket"

在代码中获取变量:

final checkArgs = String.fromEnvironment('http_serv', defaultValue: '');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM