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.xz
Create 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/.bashrc
Execute the source
Bash shell command to update the PATH variable in your working session.
source $HOME/.bashrc
Verify that Flutter is installed!
flutter --version
Check if there are any dependencies you need to install to complete the setup.
flutter doctor
The 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 -y
Create 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.zip
Create 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 ./android
Get thesdkmanager
version. (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/$version
Move 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/.bashrc
Install 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_installed
Add 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/.bashrc
Configure Flutter
Configure flutter to use the Android SDK.
flutter config --android-sdk $HOME/Applications/android/
Accept Android SDK licenses.
sdkmanager --licenses
Check to see if if there are any more dependencies that you’ll need to install to complete the setup.
flutter doctor
Nice 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…