Difference between revisions of "WayDroid"

From NixOS Wiki
Jump to: navigation, search
m (Teach how to override width)
m (rollback unauthorized mass edits)
Tag: Rollback
 
(17 intermediate revisions by 9 users not shown)
Line 1: Line 1:
WayDroid is an application which uses LXC containers to run Android applications on a non-Android system.  
+
[https://waydro.id 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|WayDroid requires a Wayland desktop session and cannot be used on X11 directly, but can be run in a nested Wayland session, using e.g. [https://www.hjdskes.nl/projects/cage cage].}}
 +
{{Warning|Installing WayDroid on your system before running nixos-generate-config will create unnecessary fstab entries that may interfere with system functionality.}}
  
== Install: ==
+
== Installation ==
  
We will need to enable the WayDroid and LXD options (the WayDroid module enables LXC).
+
Enable WayDroid in your system configuration:
  
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{ pkgs, ... }:
 
 
{
 
{
   virtualisation = {
+
   virtualisation.waydroid.enable = true;
    waydroid. enable = true;
 
    lxd.enable = true;
 
  };
 
 
}
 
}
 
</nowiki>}}
 
</nowiki>}}
  
You'll need to finish the WayDroid install in your shell.
 
  
<syntaxhighlight lang="bash">
+
After rebuilding and switching, finish the WayDroid install in your shell.  
# Rebuild NixOS config.
 
nixos-rebuild switch
 
  
# Fetch WayDroid images.
+
<syntaxhighlight lang="console">
# You can add the parameters "-s GAPPS -f" to have GApps support.
+
Fetch WayDroid images.
sudo waydroid init
+
You can add the parameters "-s GAPPS -f" to have GApps support.
 +
$ sudo waydroid init
 +
</syntaxhighlight>
 +
 
 +
Before the following steps, you might need to do some GPU adjustments. See the troubleshooting section.
 +
 
 +
== Usage ==
 +
 
 +
Start the container
 +
 
 +
<syntaxhighlight lang="console">
 +
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
 +
</syntaxhighlight>
 +
 
 +
General usage
 +
 
 +
<syntaxhighlight lang="console">
 +
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
 +
</syntaxhighlight>
 +
 
 +
== Maintenance  ==
 +
 
 +
=== Update Android ===
 +
 
 +
Use following command to upgrade Android (LineageOS) to a newer version if available
 +
 
 +
<syntaxhighlight lang="console">
 +
$ sudo waydroid upgrade
 +
</syntaxhighlight>
  
# Before the following steps, you might need to do some GPU adjustments. See the next section.
+
=== Resetting Android Container ===
  
# Start the WayDroid LXC container
+
{{Warning|All files of your Android container will be lost}}
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".
+
<syntaxhighlight lang="console">
waydroid session start
+
Stop Waydroid container
 +
$ sudo systemctl stop waydroid-container
 +
 
 +
Removing images and user data
 +
$sudo rm -r /var/lib/waydroid/* ~/.local/share/waydroid
 
</syntaxhighlight>
 
</syntaxhighlight>
  
==GPU Adjustments==
+
== Troubleshooting ==
 +
 
 +
=== GPU Adjustments ===
 +
 
 
In case you have an NVIDIA card or an RX 6800 series, you'll need to disable GBM and mesa-drivers:
 
In case you have an NVIDIA card or an RX 6800 series, you'll need to disable GBM and mesa-drivers:
 
{{file|/var/lib/waydroid/waydroid_base.prop|prop|<nowiki>
 
{{file|/var/lib/waydroid/waydroid_base.prop|prop|<nowiki>
Line 46: Line 96:
 
</nowiki>}}
 
</nowiki>}}
  
==Usage==
+
=== Linux 5.18+ ===
<syntaxhighlight lang="bash">
+
 
# Start Android UI
+
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:
waydroid show-full-ui
+
{{file|/var/lib/waydroid/waydroid_base.prop|prop|<nowiki>
# Start an Android app
+
sys.use_memfd=true
waydroid app start <application name>
+
</nowiki>}}
# Install an Android app
+
 
waydroid app install </path/to/app.apk>
+
=== Changing keyboard layout ===
# List Android apps
+
 
waydroid app list
+
According to [https://github.com/waydroid/waydroid/issues/209 an upstream issue], changing the keyboard layout doesn't seem possible at the moment.
# Enter the LXC shell
+
 
sudo waydroid shell
+
=== Missing UTF-8 support ===
# Overrides the full-ui width
+
 
waydroid prop set persist.waydroid.width 608
+
According to [https://github.com/waydroid/waydroid/issues/536 an upstream issue], Android might fail to display special characters correctly.
</syntaxhighlight>
+
 
 +
=== WayDroid interferes with suspend/hybernation ===
 +
 
 +
According to [https://github.com/waydroid/waydroid/issues/168 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 <code>wl-clipboard</code> to <code>environment.systemPackages</code>.
  
 
==See Also:==
 
==See Also:==
[https://wiki.archlinux.org/title/Waydroid Arch Wiki]
+
 
 +
* [https://wiki.archlinux.org/title/Waydroid Waydroid article on the Archlinux Wiki]

Latest revision as of 11:05, 6 April 2024

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 directly, but can be run in a nested Wayland session, using e.g. cage.
Warning: Installing WayDroid on your system before running nixos-generate-config will create unnecessary fstab entries that may interfere with system functionality.

Installation

Enable WayDroid in your system configuration:

Breeze-text-x-plain.png
/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

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:

Breeze-text-x-plain.png
/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:

Breeze-text-x-plain.png
/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.

See Also: