WayDroid
WayDroid is an application which uses LXC containers to run Android applications on a non-Android system.
Installation
Enable WayDroid in your system configuration:
/etc/nixos/configuration.nix
{
virtualisation.waydroid.enable = true;
}
After rebuilding and switching, 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
Maintenance
Update Android
Use following command to upgrade Android (LineageOS) to a newer version if available
$ sudo waydroid upgrade
Resetting Android Container
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, so you may 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 UTF-8 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.
Clipboard sharing
Add wl-clipboard
to environment.systemPackages
.