首页 > 解决方案 > 在原生 iOS 和 Android 中获取 --dart-define 环境变量

问题描述

我正在尝试找到一种方法来访问本--dart-define机 iOS 和 Android 代码内部提供的环境变量。

有没有办法做到这一点?

我已经尝试过https://binary-studio.com/2020/06/23/flutter-3/中解释的指南,但这不起作用,因为写入生成.xcconfig的内容=不是由%3D. 我得到了错误

error: .../ios/Flutter/DEFINEEnvironment.xcconfig:2: expected a ‘=’, but found % (in target 'Runner' from project 'Runner')

该文件DEFINEEnvironment.xcconfig使用以下内容生成,MY_VAR%3DMY_VALUE而不是MY_VAR=MY_VALUE

更新

这似乎正在发生,因为从传递给--dart-define它的 args 读取时必须将其编码=%3D. 而且我不知道如何防止这种情况发生

标签: androidiosflutterdart

解决方案


脚本似乎已更改,现在包含解码字符串的必要代码。

需要添加到 Scheme 的 post-action 脚本是:

function urldecode() { : "${*//+/ }"; echo "${_//%/\\x}"; }

IFS=',' read -r -a define_items <<< "$DART_DEFINES"


for index in "${!define_items[@]}"
do
    define_items[$index]=$(urldecode "${define_items[$index]}");
done

printf "%s\n" "${define_items[@]}" > ${SRCROOT}/Flutter/DEFINEEnvironment.xcconfig

推荐阅读