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

Sun*_*dog 5 flutter

我正在将 Flutter 应用程序作为模块嵌入到现有的 Android 应用程序中(https://flutter.dev/docs/development/add-to-app/android/project-setup),并且想知道我是否/如何可以使用“--dart-define”定义编译时常量。尝试使用./gradlew -Ddart-define=myVal=Value但没有任何运气。

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

Dmi*_*nin 9

配置

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

--dart-define="http_serv=http://10.0.2.2:42627/" --dart-define="websocket=ws://10.0.2.2:42627/websocket"
Run Code Online (Sandbox Code Playgroud)

在代码中获取变量:

const checkArgs = String.fromEnvironment('http_serv', defaultValue: '');
Run Code Online (Sandbox Code Playgroud)


小智 3

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

\n

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

\n

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

\n

如果你的项目依赖于 module\xe2\x80\x99s 源代码。

\n

您可以在 Android 宿主项目目录 \xef\xbc\x88 或目录 \xef\xbc\x89dart-define中设置 s 。gradle.propertiesyourHostProject/yourFlutter/.android/Flutter/

\n
--dart-define=myVal=Value \n
Run Code Online (Sandbox Code Playgroud)\n

解释

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

    \n
  • \n
  • flutter.gradle.android/Flutter项目实例 \xef\xbc\x88 flutter.gradle#731-L734加载 dart-defines ),然后使用它(flutter.gradle#L1091-L1093)。

    \n
  • \n
  • 要设置项目实例值,您可以添加--dart-define=myVal=Valuegradle.properties. (如果您有多个gradle.properties文件,请考虑 Gradle Docs 中的配置 order\xef\xbc\x88 Gradle 属性)。

    \n
  • \n
\n