问题描述
我们有一个为不同站点构建的包,需要在实际构建步骤之前执行一些预构建步骤。
在Flutter android中,这些步骤在“preBuild.dependsOn”(在android/app/build.gradle)中执行
编辑(附加信息):
MyFlutterMob/android/app/build.gradle
运行以下预构建步骤:
def option = System.getenv('APK_FOR')
setConfig()
{
if(option == "DEMO"){
copy{
from "../../DemoAppAsset/Applogo.png"
into "../../assets/images"
}
}
else if(option == "PROD"){
copy{
from "../../ProdAppAsset/Applogo.png"
into "../../assets/images"
}
}
}
preBuild.dependsOn setConfig
在 Flutter web build 中也是可能的(无法找到相同的 gradle 脚本)
解决方法
编写以环境名称(PROD1/PROD2/UAT/... ) 作为输入的脚本,并将所需的“图像到白标”/“主题颜色列表文件”/“字符串列表配置”复制到相应的文件夹之前运行“flutter build web”。虽然它限制所有发布都发生在 linux / 为 windows 维护等效的 bat 文件,但总的来说它是有效的。
,如果您使用的是 VSCode,我认为您可以在 launch.json 中设置预构建,如here
所述基本上你可以设置你的 .vscode/launch.json
{
"version": "0.2.0","configurations": [
{
"name": "Flutter","request": "launch","type": "dart",}
]
}
然后,您应该在同一文件夹中创建一个文件 tasks.json,并添加一个可以执行您想要的操作的脚本(例如 npm 脚本)
{
"version": "2.0.0","tasks": [
{
"type": "npm","script": "copyClientConfiguration","problemMatcher": []
}
]
}
最后,您可以在 launch.json
中将此任务添加为preLaunchTask
{
"version": "0.2.0","preLaunchTask": "npm: copyClientConfiguration"
}
]
}