Installing Flutter on WSL2 — Windows 10
Updated: January 14th, 2022 to use most recent versions of Ubuntu (20.04.3 LTS), Flutter (2.8.1), Dart (2.15.1), and all accompanying screenshots.
I’m running Ubuntu 20.04.3 LTS on Windows Subsystem for Linux - WSL2 - and I’ve been enjoying it a lot now that I’m working off a Windows 10 machine. As a former Mac user - I wanted to leverage WSL2 while doing my Flutter development, so here’s how I went about setting up my environment. I will be running all of my commands in Bash, Ubuntu’s default shell.
Install Flutter
Create a Downloads directory if it doesn’t already exist, and navigate to it.
mkdir -p $HOME/Downloads && cd "$_"Download the latest Flutter SDK release. (Right-click and select “Copy link address” to copy the address of the archive.)
wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_2.8.1-stable.tar.xzCreate an Applications directory if it doesn’t already exist, and navigate to it.
mkdir -p $HOME/Applications && cd "$_"Extract the Flutter files from the archive in the Downloads directory to the Applications directory.
tar xfv $HOME/Downloads/$(ls -d $HOME/Downloads/flutter*.tar.xz | xargs basename)Add the Flutter path to the Bash shell PATH variable in$HOME/.bashrc.
echo -e "\n# Flutter\nexport PATH=\$HOME/Applications/flutter/bin:\$PATH" >> $HOME/.bashrcExecute the source Bash shell command to update the PATH variable in your working session.
source $HOME/.bashrcVerify that Flutter is installed!
flutter --versionCheck if there are any dependencies you need to install to complete the setup.
flutter doctorThe flutter doctor command checks your environment and displays a report to the terminal window. While we do have flutter properly installed, it is missing some dependencies that we’ll need.
Flutter relies on a full installation of Android SDK to supply its Android platform dependencies. So next we’ll install Android SDK.
Install Android SDK
Install the unzip utility and the default-jdk development utility
sudo apt install unzip default-jdk -yCreate a Downloads directory if it doesn’t already exist, and navigate to it.
mkdir -p $HOME/Downloads && cd "$_"Download the latest Android SDK Command line tools for Linux. (Right-click the download button and select “Copy link address” to copy the address of the archive.)
wget https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zipCreate an Applications directory if it doesn’t already exist, and navigate to it.
mkdir -p $HOME/Applications && cd "$_"Extract the Android SDK Command line tools files from the archive in the Downloads directory to the Applications directory.
unzip $HOME/Downloads/$(ls -d $HOME/Downloads/commandlinetools-linux*.zip | xargs basename) -d ./androidGet thesdkmanagerversion. (As of writing, 5.0 is the latest stable release.)
version=$($HOME/Applications/android/cmdline-tools/bin/sdkmanager --sdk_root=$HOME/Applications/android --version | head -n1);
echo $version;Create a new version directory for the command line tools.
mkdir -p $HOME/Applications/android/cmdline-tools/$versionMove the command line tools to the new version directory.
mv -vt $HOME/Applications/android/cmdline-tools/$version/ $HOME/Applications/android/cmdline-tools/!($version)Add the cmdline-tools path to the Bash shell PATH variable in$HOME/.bashrc. This allows us to easily use tools like sdkmanager.
echo -e "\n# Android\nexport PATH=\$HOME/Applications/android/cmdline-tools/$version/bin:\$PATH" >> $HOME/.bashrc;Execute the source Bash shell command to update the PATH variable in your working session.
source $HOME/.bashrcInstall packages with sdkmanager.
sdkmanager --install "system-images;android-31;google_apis;x86_64" "platform-tools" "platforms;android-31" "build-tools;31.0.0" "cmdline-tools;latest"List all the successfully install packages
sdkmanager --list_installedAdd the newly installed platform-tools and emulator path to the Bash shell PATH variable in$HOME/.bashrc. This gives us access to tools like adb, which we’ll need later when we use Android Emulators for running our Flutter apps.
echo -e "export PATH=\$HOME/Applications/android/emulator:\$PATH" >> $HOME/.bashrc;
echo -e "export PATH=\$HOME/Applications/android/platform-tools:\$PATH" >> $HOME/.bashrc;Execute the source Bash shell command to update the PATH variable in your working session.
source $HOME/.bashrcConfigure Flutter
Configure flutter to use the Android SDK.
flutter config --android-sdk $HOME/Applications/android/Accept Android SDK licenses.
sdkmanager --licensesCheck to see if if there are any more dependencies that you’ll need to install to complete the setup.
flutter doctorNice work! We’ve now got Flutter and the Android SDK all set up on WSL2!
But, see that message — “No devices available” — in the screenshot above? We need to fix that. Next, we’ll be setting up our devices for development and debugging, but that deserves its own posts…
