Waydroid

Waydroid is the successor to Anbox, an Android emulator for running apps on Linux

Waydroid is still in early development and is not officially supported by the Mobian project. It is not available in Mobian repositories nor in the Debian “main” archive, which are the only ones enabled by default.

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.

Waydroid conflicts with Anbox. Make sure no components from Anbox are running before attempting to run Waydroid.
A complete Waydroid setup takes about 3.5 GB after the LineageOS image is downloaded and installed. Make sure you have enough storage available.

Method 1: install from upstream repo

The upstream repository is maintained by Waydroid. Bugs should be filed to Waydroid, not Mobian.

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
If you still have any contents in /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

These are unofficial packages. It is recommended to use the Waydroid upstream repo.

Follow the instructions here

After install

Older versions of this page had a section for “Manual workarounds to run on Mobian (non-pinephone)”. These are no longer needed.
These instructions previously called for 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
This step will download about 700-750 MB of data. Make sure you're not using a metered connection while running this command.

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

Known issues

Camera doesn't work

GPS is not supported