meta data for this page
Table of Contents
Waydroid
Waydroid is the successor to Anbox, an Android emulator for running apps on Linux
Do not expect the same performance you get from native apps, expect frequent crashes, difficult input, and high CPU usage.
Please keep in mind you will run into issues and report those directly to upstream.
Here be dragons.
Method 1: install from upstream repo
See the official Desktop Install Instructions for bullseye and bookworm, use the Ubuntu/Debian Based Install Instructions.
Method 2: build and install from source
Make a new directory and gather all the dependencies
Please don't reuse an old build directory, the dpkg -i
lines assumes there aren't any old versions present.
mkdir Waydroid-build && cd $_ git clone --depth=1 https://github.com/waydroid/libglibutil.git git clone --depth=1 https://github.com/waydroid/libgbinder.git git clone --depth=1 https://github.com/waydroid/gbinder-python.git
Install the necessary Debian build tools
sudo apt install devscripts dh-make git-buildpackage
Build and install Waydroid dependencies
/etc/gbinder.conf
from the old instructions it's recommended to simply delete the file. Recent versions of Waydroid will configure gbinder to use the appropriate ApiLevel
for your Android image on its own. Leaving the file in place may cause the build to fail and/or make the Waidroid container unable to start.
cd libglibutil/ sudo apt build-dep . echo "3.0 (native)" > debian/source/format gbp buildpackage -uc -us --git-debian-branch=bullseye --git-ignore-new cd .. sudo dpkg -i libglibutil_*_*.deb libglibutil-dev_*_*.deb
cd libgbinder/ sudo apt build-dep . echo "3.0 (native)" > debian/source/format gbp buildpackage -uc -us --git-debian-branch=bullseye --git-ignore-new cd .. sudo dpkg -i libgbinder_*_*.deb libgbinder-tools_*_*.deb libgbinder-dev_*_*.deb
gbinder-python has incomplete Debian packaging and needs a little more work:
cd gbinder-python/ sudo apt build-dep . echo "3.0 (native)" > debian/source/format EMAIL=email@example.com gbp dch --debian-branch=bullseye --upstream-branch=bullseye sed -i '1s/(unknown)/(1.1.1)/' debian/changelog gbp buildpackage -uc -us --git-debian-branch=bullseye --git-ignore-new cd .. sudo dpkg -i python3-gbinder_*_*.deb
Build and install Waydroid
git clone --depth=1 https://github.com/waydroid/waydroid.git cd waydroid/ sudo apt build-dep . gbp buildpackage -uc -us --git-debian-branch=main cd .. sudo dpkg -i waydroid_*_all.deb
Method 3: install from Lukas' repo
Follow the instructions here
After install
psi=1
to be added to the Linux command line. This is no longer required as the functionality is already enabled in the default Mobian kernel builds. Removing psi=1
from the Linux command line or letting /etc/default/u-boot
get overwritten by the Mobian defaults should not break Waydroid.
Initialize Waydroid
Waydroid needs to set up a downloaded LineageOS image and an LXC instance. To do that, run the following:
sudo waydroid init
This only needs to be done once.
Running Waydroid
With the latest git version of Waydroid the application launchers added to the Phosh drawer should start the session manager automatically. Be patient when launching the first Android app after boot, the CPU is under very heavy load while the LXC container is booting.
It is also recommended to start something that doesn't show the onscreen keyboard, like the “Clocks” application, before tapping a Waydroid launcher. Otherwise the Waydroid session becomes cropped to the screen area above the onscreen keyboard.
If Waydroid becomes stuck on the screen (as in will not close), run waydroid session stop
to stop the session manager and in turn the LXC container.
Optional tweaks
Hide launchers
If you want to keep the .desktop files but hide the launchers, add “NoDisplay=true”
to those you dont want to see. The following hides all Waydroid launchers:
for i in ~/.local/share/applications/waydroid*desktop; do echo 'NoDisplay=true' >> $i; done
Remove launchers for redundant apps
# Calculator truncate -s 0 ~/.local/share/applications/waydroid.com.android.calculator2.desktop # Contacts truncate -s 0 ~/.local/share/applications/waydroid.com.android.contacts.desktop # Clocks truncate -s 0 ~/.local/share/applications/waydroid.com.android.deskclock.desktop # Files truncate -s 0 ~/.local/share/applications/waydroid.com.android.documentsui.desktop # Gallery truncate -s 0 ~/.local/share/applications/waydroid.com.android.gallery3d.desktop # Music truncate -s 0 ~/.local/share/applications/waydroid.org.lineageos.eleven.desktop # Browser truncate -s 0 ~/.local/share/applications/waydroid.org.lineageos.jelly.desktop # Recorder truncate -s 0 ~/.local/share/applications/waydroid.org.lineageos.recorder.desktop # Calendar truncate -s 0 ~/.local/share/applications/waydroid.org.lineageos.etar.desktop
Disable suspend inside Waydroid
Some users have reported that suspend inside Waydroid causes instability, the following two properties will disable it:
waydroid prop set persist.waydroid.no_suspend true waydroid prop set persist.waydroid.suspend false