Waydroid

From NixOS Wiki
Revision as of 14:23, 17 September 2022 by imported>Onny (Restructuring page)

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
# Start an Android app
waydroid app start <application name>
# Install an Android app
waydroid app install </path/to/app.apk>
# List Android apps
waydroid app list
# 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

See Also: