Waydroid: Difference between revisions

From NixOS Wiki
imported>CajuM
No edit summary
imported>Onny
Restructure page
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.}}
{{Warning|Installing WayDroid on your system before running nixos-generate-config will create unnecessary fstab entries that may interfere with system functionality.}}
{{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).
We will need to enable the WayDroid and LXD options (the WayDroid module enables LXC).
Line 18: Line 18:
</nowiki>}}
</nowiki>}}


You'll need to finish the WayDroid install in your shell.
Apply changes
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Rebuild NixOS config.
# Rebuild NixOS config.
nixos-rebuild switch
nixos-rebuild switch
</syntaxhighlight>
You'll need to finish the WayDroid install in your shell.


<syntaxhighlight lang="bash">
# Fetch WayDroid images.
# Fetch WayDroid images.
# You can add the parameters "-s GAPPS -f" to have GApps support.
# You can add the parameters "-s GAPPS -f" to have GApps support.
Line 40: Line 43:
</syntaxhighlight>
</syntaxhighlight>


==GPU Adjustments==
== Usage ==
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>
ro.hardware.gralloc=default
ro.hardware.egl=swiftshader
</nowiki>}}


==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:
{{file|/var/lib/waydroid/waydroid_base.prop|prop|<nowiki>
sys.use_memfd=true
</nowiki>}}
==Usage==
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Start Android UI
# Start Android UI
Line 68: Line 59:
waydroid prop set persist.waydroid.width 608
waydroid prop set persist.waydroid.width 608
</syntaxhighlight>
</syntaxhighlight>
== Troubleshooting ==
=== GPU Adjustments ===
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>
ro.hardware.gralloc=default
ro.hardware.egl=swiftshader
</nowiki>}}
=== 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:
{{file|/var/lib/waydroid/waydroid_base.prop|prop|<nowiki>
sys.use_memfd=true
</nowiki>}}


==See Also:==
==See Also:==
[https://wiki.archlinux.org/title/Waydroid Arch Wiki]
* [https://wiki.archlinux.org/title/Waydroid Arch Wiki]

Revision as of 16:36, 16 September 2022

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 next section.

# 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

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

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: