Waydroid

From NixOS Wiki
Revision as of 07:58, 29 September 2022 by imported>Onny (Add note about suspend issues)

WayDroid is an application which uses LXC containers to run Android applications on a non-Android system.

Warning: WayDroid requires a Wayland desktop session and cannot be used on X11.
Warning: Installing WayDroid on your system before running nixos-generate-config will create unnecessary fstab entries that may interfere with system functionality.

Installation

We will need to enable the WayDroid and LXD options (the WayDroid module enables LXC).

 
/etc/nixos/configuration.nix
{ pkgs, ... }:
{
  virtualisation = {
    waydroid.enable = true;
    lxd.enable = true;
  };
}

Apply changes

# Rebuild NixOS config.
nixos-rebuild switch

You'll need to finish the WayDroid install in your shell.

# Fetch WayDroid images.
# You can add the parameters "-s GAPPS -f" to have GApps support.
sudo waydroid init

Before the following steps, you might need to do some GPU adjustments. See the troubleshooting section.

Usage

Start the container

# Start the WayDroid LXC container
sudo systemctl start waydroid-container
# You'll know it worked by checking the journal You should see "Started Waydroid Container".
sudo journalctl -u waydroid-container

# Start WayDroid session
# You'll know it is finished when you see the message "Android with user 0 is ready".
waydroid session start

General usage

# Start Android UI
waydroid show-full-ui
# List Android apps
waydroid app list
# Start an Android app
waydroid app launch <application name>
# Install an Android app
waydroid app install </path/to/app.apk>
# Enter the LXC shell
sudo waydroid shell
# Overrides the full-ui width
waydroid prop set persist.waydroid.width 608

Resetting Android Container

Warning: All files of your Android container will be lost


# Stop Waydroid container
sudo systemctl stop waydroid-container

# Removing images and user data
sudo rm -r /var/lib/waydroid/* ~/.local/share/waydroid

Troubleshooting

GPU Adjustments

In case you have an NVIDIA card or an RX 6800 series, you'll need to disable GBM and mesa-drivers:

 
/var/lib/waydroid/waydroid_base.prop
ro.hardware.gralloc=default
ro.hardware.egl=swiftshader

Linux 5.18+

Linux 5.18 and later removed ashmem in favor of memfd, right now you need to tell waydroid (1.2.1 and later) to use the new module:

 
/var/lib/waydroid/waydroid_base.prop
sys.use_memfd=true

Changing keyboard layout

According to an upstream issue, changing the keyboard layout doesn't seem possible at the moment.

Missing umlaute or UTF8 support

According to an upstream issue Android might fail to display special characters correctly.

WayDroid interferes with suspend/hybernation

According to an upstream issue WayDroid might interfere with suspend or hybernation. You might have to stop the Android session and container to suspend your machine correctly.

See Also: