VSCode Multi-Root Magic: Run Flutter APK Builds in Separate Git Repos
TL;DR
Stuck with “No pubspec.yaml found” when building Flutter APKs in a multi-root VSCode workspace? Fix it in 3 steps:
- perfect workspace naming,
cwdoverrides,- emulator-ready URLs.
The Problem
- Top-level folder with 2 separate Git repos:
flutter_app/(Flutter)fastapi_backend/(Python)
- Flutter
.vscode/tasks.jsonignored in parent. - Tasks fail: “Must be run from root of Flutter project” or “No pubspec.yaml found”.
The Fix: Multi-Root Workspace + Smart Tasks
1. Create Multi-Root Workspace
- File > Add Folder to Workspace… > Add both subfolders.
- Save as
myproject.code-workspacein parent.
{
"folders": [
{ "path": "flutter_app" },
{ "path": "fastapi_backend" }
],
"settings": {
"flutter.sdkPath": "./flutter_app"
}
}
2. Update flutter_app/.vscode/tasks.json
- For Flutter task:
- Edit
.vscode/tasks.jsoninflutter_appto use${workspaceFolder:flutter_app}.
- Edit
- Run task from
flutter_appfolder context.
{
"version": "2.0.0",
"tasks": [
{
"label": "Build APK (Dev Local)",
"type": "shell",
"command": "flutter",
"args": [
"build",
"apk",
"--debug",
"--dart-define=ENV=development",
"--dart-define=BASE_URL=http://10.0.2.2:8000",
],
"options": {
"cwd": "${workspaceFolder:flutter_app}"
},
"group": "build",
},
]
}
Key:
cwdmust match exact folder name in.code-workspace(case-sensitive).
Pro Tip: Emulator Localhost
Use 10.0.2.2 to hit your local FastAPI backend from Android emulator.
Final Checklist
- Workspace folder name = task cwd
- Run task via Command Palette (select Flutter folder)
- Reload VSCode after changes (Very important)
No monorepo. No drama. Just build.
Perfect for full-stack Flutter + FastAPI devs.