Skip to content

Instantly share code, notes, and snippets.

@goldcoders
Last active December 23, 2021 20:56
Show Gist options
  • Save goldcoders/e9d572f005352fc4568482e5fad60a26 to your computer and use it in GitHub Desktop.
Save goldcoders/e9d572f005352fc4568482e5fad60a26 to your computer and use it in GitHub Desktop.
Develop Flutter Apps on Windows WSLg for Native Linux Apps and Android

Windows 11 with WSLg - Android , WSL(Ubuntu) Linux Desktop - Flutter SetUp

Install Dart on Ubuntu

sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub
sudo wget -qO /etc/apt/sources.list.d/dart_stable.list https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list
sudo apt update
sudo apt install -y dart
dart --version

Add to Path Dart and Pub Packages

export PATH="$PATH:/usr/lib/dart/bin"
export PATH="$PATH":"$HOME/.pub-cache/bin"

Install FVM

dart pub global activate fvm
fvm install stable
fvm global 

Add to Path Default Flutter

export PATH="$HOME/fvm/default/bin":"$PATH"

Check Flutter

flutter doctor

Install Android Command Line

Reference on Getting Android Command Line

Install JDK

sudo apt install unzip default-jdk -y

Download Commandline tools

mkdir -p $HOME/Downloads && cd "$_"
wget https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip

Extract CLI to Applications Folder

mkdir -p $HOME/Applications && cd "$_"
unzip $HOME/Downloads/$(ls -ltu $HOME/Downloads/ | sort | head -n1 | sed 's/.* //') -d ./android

Get sdkmanager version

$HOME/Applications/android/cmdline-tools/bin/sdkmanager --sdk_root=$HOME/Applications/android --version | head -n1

Creatae folder for specific version of sdk

mkdir -p $HOME/Applications/android/cmdline-tools/$($HOME/Applications/android/cmdline-tools/bin/sdkmanager --sdk_root=$HOME/Applications/android --version | head -n1)
mv -vt $HOME/Applications/android/cmdline-tools/$($HOME/Applications/android/cmdline-tools/bin/sdkmanager --sdk_root=$HOME/Applications/android --version | head -n1)/ $HOME/Applications/android/cmdline-tools/!($($HOME/Applications/android/cmdline-tools/bin/sdkmanager --sdk_root=$HOME/Applications/android --version | head -n1))

Add to path Android CLI tools

export PATH=$HOME/Applications/android/cmdline-tools/5.0/bin:$PATH

Install sdkmanager packages

sdkmanager --install "system-images;android-30;google_apis;x86" "platform-tools" "platforms;android-30" "build-tools;30.0.3" "cmdline-tools;latest"

sdkmanager "system-images;android-27;google_apis_playstore;x86"

sdkmanager --list_installed

Update PATH to references newly downloaded packages

# Remove after installing other sdkmanager packages
#export PATH=$HOME/Applications/android/cmdline-tools/5.0/bin:$PATH
export PATH=/home/uriah/Applications/android/platform-tools:$PATH
export PATH=/home/uriah/Applications/android/platform-tools:$PATH
export PATH=/home/uriah/Applications/android/tools/bin:$PATH

Install Gradle

sudo apt-get install gradle

Add to Flutter Config

flutter config --android-sdk $HOME/Applications/android/
sudo apt-get install cpu-checker
egrep -c '(vmx|svm)' /proc/cpuinfo
kvm-ok
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

Create Emulator

fluter emulators --create --name dev
flutter emulators --launch dev
sudo gpasswd -a $USER kvm

Fixing Permissions if it still not permitted

chown -R $USER /dev/kvm

Sign Android license

Accept all , Yes

sdkmanager --licenses

Additional linux requirements

sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev

building linux apps

sudo apt-get install libgtk-3-0 libblkid1 liblzma5

Fixing permissions

sudo chown -R $USER/usr/local/

Using with VSCODE

Install all Extensions in your Windows machine to the WSL remote repository

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Linux Desktop",
            "type": "dart",
            "request": "launch",
            "program": "lib/main.dart",
            "deviceId": "linux",
        }
    ]
}

Creating New Flutter Project

flutter config --enable-linux-desktop

flutter create --org=dev.goldcoders --platforms=linux
flutter run -d linux
flutter build linux
cd ~/Downloads
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt -f install
sudo apt install google-chrome-stable

check if google chrome dependencies in flutter is check

flutter doctor --verbose

Update PATH to use adb

# Remove after installing other sdkmanager packages
#export PATH=$HOME/Applications/android/cmdline-tools/5.0/bin:$PATH
export PATH=$HOME/Applications/android/cmdline-tools/latest/bin:$PATH
export PATH=$HOME/Applications/android/platform-tools:$PATH

Using Android phone with ADB

adb start-server

Get Your Phone WLAN IP

guide

This requires your phone to be on Developer Mode

Connect to your devices

adb connect 192.169.100.98:5555

List devices

adb devices

Using USB Device

Installing usbipd

winget install --interactive --exact dorssel.usbipd-win

usbip list //result 2-2 busid on my usb

usbip wsl attach --busid=2-2

// enter your wsl password

Issue related with Fix

check if it works

adb devices // this should have at least one device
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment