Repository navigation
Releases
Source: in-app Linux runtime 2.1.4
Corresponding source of the in-app Linux runtime shipped in Andronix app 10.1.6 (the build with installer 2.1.4): libandronix.so (installer 2.1.4) and the open-source libraries next to it.
- proot 5.1.107.96 (Termux fork, GPL-2.0), built from the upstream archive plus the Andronix build scripts in standalone/proot. proot is unchanged from standalone-2.1.3 — the libraries are byte-for-byte identical (same libproot.so; the #229 shm-helper self-exec fix is already in it). talloc 2.5.0 (LGPL-3.0-or-later) and libandroid-shmem 0.7 (BSD-3-Clause): unmodified source archives.
- virglrenderer 1.3.0 (MIT) with virglrenderer-android.patch, libepoxy 1.5.10 (MIT).
- License texts, README.txt (which file is what), SHA256SUMS (the source files and the six libraries in the app) and build.json.
Build scripts: https://github.com/AndronixApp/andronix (standalone/).
The proot build scripts (andronix.py, build.sh, inside.sh, Dockerfile, stops.py) are attached to this release and also live in standalone/proot/ in the repo. The only library that changes from standalone-2.1.3 is libandronix.so (the installer: more download retries and resume, and an edition-aware download label); proot, its loader, talloc and virgl are identical.
andronix 2.0.10
2.0.10 (2026-10-15)
2.0.9 was only a release candidate (beta); everything in it ships here too.
- A phone where a tool inside the distro crashes is no longer told its network is at fault (support #470, #471): on some phones Termux's Linux layer makes programs in the distro crash (the signature checker gpgv) or fail with "Function not implemented", so every package list looked unsigned and the install said "your network is likely showing a sign-in page". The installer now recognises it, tries once more with proot's fast mode off, and if that doesn't help says to update Termux.
- One PulseAudio for sound, not one more at every start: where Termux runs programs through Android's linker, PulseAudio's own check said it wasn't running when it was, so every
andronix startlaunched another sound server (a dozen after a dozen starts), each one a process toward Android's limit of 32. The installer now asks the running server's socket first. - A desktop that lost one of its own packages gets it back (support #458): a Kali XFCE install without dbus-x11 (removed since the install) quit at once with "dbus-launch: not found".
andronix updatenow puts back any missing packages of the installed desktop, and when the session can't start for that reason its log says which package and to runandronix update. - Distros with systemd install on kernel 3.10 phones (support #436, #438): systemd stopped with "Failed to take /etc/passwd lock: Invalid argument", because it locks the user database with a kind of lock Linux added in 3.15, and then every package that needs dbus or polkit stayed unconfigured (Kali; Ubuntu with KDE). On kernels before 3.15 a small shim now gives systemd the older lock instead.
- The time zone your phone reports is always accepted (support #443, #435): Android still reports some zones by old names (Asia/Calcutta for India) that newer Ubuntu and Debian keep only in an extra package, so setting up the user, the last step of an install, failed with "Use a name like Europe/Berlin". The installer now maps old names to the current ones (Asia/Kolkata), accepts a name typed in another case, and never fails setup over a time zone: one it can't find keeps the current zone.
- One install of a distro at a time (support #313): a second
andronix installof the same distro in another Termux session (or while the app is installing it) failed on the first one's package lock, while the first finished fine. Install, update, remove and restore now hold a lock per distro, and a second run stops at once with " is being installed in another Termux session", saying to wait or close it and run the same command again. The lock goes with its process, so a crashed or killed run never blocks the next. - A resumed install waits for a leftover package run (support #296): when an earlier attempt's apt or pacman is still running under this distro's proot with nothing left to start it, the installer waits up to 5 minutes, then stops that leftover, finishes dpkg's configuration and tries again. A package run that belongs to a live install, or to anything outside this distro, is never touched.
- Play Store Termux on a network that blocks termux.net says so (support #305): it read as a missing package. Play Store Termux has only one package server, so the message says your network blocks it and to switch network or use a VPN; other Termux keeps the mirror advice.
- Fake root that didn't take is retried once (support #312): on some phones (seen on an Android 16 ROM with kernel 4.14), Arch stopped with "pacman-key needs to be run as root". The install now retries once with proot on ptrace only, and the log says whether that fixed it.
- Fedora installs on x86 Chromebooks and x86 Android (support #326): Android's x86 app sandbox refuses the old file-creation system call that Fedora's package manager uses to import its keys ("Function not implemented"). A small shim, on x86 only and only where the check finds the call blocked, swaps it for the modern one. The fix that gives systemd its mount ids now also goes in wherever the check finds them missing, whatever the kernel (ChromeOS on 5.10).
- Kali gets Mozilla's Firefox (64-bit; 32-bit phones keep Firefox ESR): Kali moved to FFmpeg 9, which Firefox ESR 140 can't load, so videos with H.264 or AAC didn't play.
andronix updateswitches existing Kali installs: it installs Mozilla's Firefox from Mozilla's package repository (as on Ubuntu), keeps your Firefox profile (bookmarks, logins, history), points the dock, the Whisker menu favourites and your launchers at it, and removes Firefox ESR only when nothing else depends on it.
2.0.9 (release candidate only; shipped in 2.0.10)
- A desktop added to a command-line install starts for your user (support #284): the user made at the first login of a command-line install never got the desktop's session files, so
andronix desktopstopped with "The desktop session is missing". Installing a desktop, andandronix desktop, now copy what the user's home lacks from /etc/skel, never overwriting your files (VNC already did). - Andronix works on networks that block public DNS (card #141): where a network drops DNS to public servers, every install stopped at "Finding the best download" with "Couldn't reach the download servers", while curl and the Andronix app worked. The installer looked names up itself through public servers (Termux's 8.8.8.8, then 1.1.1.1), and so does the distro (its resolv.conf). Now both go through Android's own resolver (the network's DNS, or Private DNS): the installer asks it first, with the public servers as the fallback, and each session runs a small forwarder that glibc distros ask through an NSS module (
hosts: files andronix [NOTFOUND=return] dnsin nsswitch.conf, set again on every start). A name that doesn't exist answers at once; with no forwarder, lookups go to resolv.conf as before. Alpine (musl) keeps resolv.conf only. The install log says which resolver answered ("dns dl.andronix.app: android"). The 64-bit Termux build now links with Android's C library, like the other CPUs.ANDRONIX_DNS=gokeeps the old behaviour.
2.0.8 (2026-10-10)
andronix reportsends the failed run's own log, also for errors without one of their own; a newer run since (a "Try again") follows it, shorter. Before, such a report carried only the newest log, the retry's (support #255).- A question with no keyboard to answer it says so: when its input isn't a terminal, a prompt fails with "This needs a terminal" and how to run the command instead, and the installer's screens never try to open /dev/tty themselves (support #255 saw "could not open a new TTY: open /dev/tty: no such device or address").
- sudo no longer prints "unable to send audit message" (Ubuntu 26.04 and other distros with the classic sudo): under proot, every sudo printed "sudo: unable to send audit message: Operation not permitted" even when it worked, which read as sudo failing (support #253). The installer turns off sudo's audit logging (
Defaults !log_allowed, !log_deniedin/etc/sudoers.d/andronix-quiet) when the user is set up, and onandronix updateandandronix startfor distros installed before. Not with sudo-rs, which doesn't know those settings.
2.0.7 (2026-10-09)
Desktops
- A desktop with Firefox uses fewer processes, so Android (which starts closing apps' background processes past 32, for all apps together) is less likely to stop it. Firefox isolates only high-value sites (logins and the like) in their own process, as Firefox for Android does, with one shared content process and no fork server, and opens a blank home and new-tab page (Firefox's own start page needs a process of its own). XFCE starts without Thunar's background daemon (Thunar still opens when asked) and without the status tray. A desktop with Firefox and 17 tabs is about 29 processes under Termux, down from about 37. Firefox's settings apply on install and on
andronix updateand can be changed inabout:config; XFCE's apply to new desktops. - A runaway X server can't fill the phone any more: the VNC server's log is capped at 16 MB (the kernel stops the server there), and the desktop session writes its own log. When Android stopped proot, an X server left behind wrote 10 GB of the same error in 20 minutes.
Package manager
- A distro's own preparation step gets the usual recoveries: Ubuntu 26.04's switch to GNU coreutils (an apt install inside "Refreshing package lists"; today's images mostly have it done already) is now diagnosed, retried and logged like every other package step, instead of failing with no log.
- A failing apt hook no longer stops a refresh: when none of the known hooks matches, the refresh runs once more without apt's update hooks (for that run only), and the hooks are logged.
Install
-
An install that was interrupted while a package was unpacking can be finished. The retry used to stop on "package is in a very bad inconsistent state; it should be reinstalled" every time; now it reinstalls the half-installed packages (removing any dpkg still refuses), finishes configuring the rest and tries again.
-
Kali gets through when its download server redirects in circles. Kali's kali.download now sends package indexes to http.kali.org, which can send them back ("Redirection loop encountered"). Kali now uses http.kali.org, Kali's own redirector to a nearby mirror, as its image does. When a mirror still loops or answers without its package index ("does not have a Release file"), the installer moves once to a direct mirror; if that fails too, it says your network or region is likely redirecting the package servers. An index sent to an https mirror before the certificates are installed is retried as a connection error.
-
Kali (and other distros with systemd 256 or newer) installs on 32-bit phones with kernels older than 5.8. The fix that gives systemd ...
Source: in-app Linux runtime 2.1.3
Corresponding source of the in-app Linux runtime shipped in Andronix app 10.1.3 (the build with installer 2.1.3): libandronix.so (installer 2.1.3) and the open-source libraries next to it.
- proot 5.1.107.96 (Termux fork, GPL-2.0), built from the upstream archive plus the Andronix build scripts in standalone/proot (andronix.py applies the SysV-IPC shm-helper self-exec fix for Android's linker, #229 — this is the one change vs standalone-2.1.2's proot). talloc 2.5.0 (LGPL-3.0-or-later) and libandroid-shmem 0.7 (BSD-3-Clause): unmodified source archives.
- virglrenderer 1.3.0 (MIT) with virglrenderer-android.patch, libepoxy 1.5.10 (MIT).
- License texts, README.txt (which file is what), SHA256SUMS (the source files and the six libraries in the app) and build.json.
Build scripts: https://github.com/AndronixApp/andronix (standalone/).
The proot build scripts that apply the #229 change (andronix.py, build.sh, inside.sh, Dockerfile, stops.py) are attached to this release and also live in standalone/proot/ in the repo.
Source: in-app Linux runtime 2.1.2
Corresponding source of the in-app Linux runtime shipped in Andronix app 10.1.1 (the build with the installer switch): libandronix.so (installer 2.1.2) and the open-source libraries next to it.
- proot 5.1.107.96 (Termux fork, GPL-2.0), talloc 2.5.0 (LGPL-3.0-or-later), libandroid-shmem 0.7 (BSD-3-Clause): unmodified source archives.
- virglrenderer 1.3.0 (MIT) with virglrenderer-android.patch, libepoxy 1.5.10 (MIT).
- License texts, README.txt (which file is what), SHA256SUMS (the source files and the six libraries in the app) and build.json.
Build scripts: standalone/ in this repository at this tag; standalone/README.md says how to rebuild the libraries byte for byte.
Written offer: for at least three years after we last ship this version, we give anyone a copy of this source for no more than the cost of sending it: support@andronix.app, naming the app version.
Source: in-app Linux runtime 2.1.1-rc2
Corresponding source of the in-app Linux runtime shipped in Andronix app 10.1.1 (build 146): libandronix.so (installer 2.1.1-rc2) and the open-source libraries next to it.
- proot 5.1.107.96 (Termux fork, GPL-2.0), talloc 2.5.0 (LGPL-3.0-or-later), libandroid-shmem 0.7 (BSD-3-Clause): unmodified source archives.
- virglrenderer 1.3.0 (MIT) with virglrenderer-android.patch, libepoxy 1.5.10 (MIT).
- License texts, README.txt (which file is what), SHA256SUMS (the source files and the six libraries in the app) and build.json.
Build scripts: standalone/ in this repository at this tag; standalone/README.md says how to rebuild the libraries byte for byte.
Written offer: for at least three years after we last ship this version, we give anyone a copy of this source for no more than the cost of sending it: support@andronix.app, naming the app version.
Source: in-app Linux runtime 2.2.0-beta1 (beta installer)
Corresponding source of the beta installer in the Andronix app 10.1.1 (libandronix_beta.so, installer 2.2.0-beta1), which users can pick per distro instead of the stable one. It runs on the same open-source libraries as the stable installer 2.1.2 (release standalone-2.1.2).
- proot 5.1.107.96 (Termux fork, GPL-2.0), talloc 2.5.0 (LGPL-3.0-or-later), libandroid-shmem 0.7 (BSD-3-Clause): unmodified source archives.
- virglrenderer 1.3.0 (MIT) with virglrenderer-android.patch, libepoxy 1.5.10 (MIT).
- License texts, README.txt (which file is what), SHA256SUMS and build.json (the beta installer's sum, and the shared libraries' sums with the stable installer it pairs with).
Build scripts: standalone/ in this repository at this tag; standalone/jnilibs-beta.sh assembles the beta drop, standalone/README.md says how to rebuild the libraries byte for byte.
Written offer: for at least three years after we last ship this version, we give anyone a copy of this source for no more than the cost of sending it: support@andronix.app, naming the app version.
Source: in-app Linux runtime 2.1.0
Corresponding source of the in-app Linux runtime shipped in Andronix app 10.1: libandronix.so (installer 2.1.0) and the open-source libraries next to it.
- proot 5.1.107.96 (Termux fork, GPL-2.0), talloc 2.5.0 (LGPL-3.0-or-later), libandroid-shmem 0.7 (BSD-3-Clause): unmodified source archives.
- virglrenderer 1.3.0 (MIT) with virglrenderer-android.patch, libepoxy 1.5.10 (MIT).
- License texts, README.txt (which file is what), SHA256SUMS (the source files and the six libraries in the app) and build.json.
Build scripts: standalone/ in this repository at this tag; standalone/README.md says how to rebuild the libraries byte for byte.
Written offer: for at least three years after we last ship this version, we give anyone a copy of this source for no more than the cost of sending it: support@andronix.app, naming the app version.
Source: in-app Linux runtime 2.1.0-dev26
Corresponding source of the in-app Linux runtime shipped in Andronix app 10.1.0 beta (beta17): libandronix.so (installer 2.1.0-dev26) and the open-source libraries next to it.
- proot 5.1.107.96 (Termux fork, GPL-2.0), talloc 2.5.0 (LGPL-3.0-or-later), libandroid-shmem 0.7 (BSD-3-Clause): unmodified source archives.
- virglrenderer 1.3.0 (MIT) with virglrenderer-android.patch, libepoxy 1.5.10 (MIT).
- License texts, README.txt (which file is what), SHA256SUMS (the source files and the six libraries in the app) and build.json.
Build scripts: standalone/ in this repository at this tag; standalone/README.md says how to rebuild the libraries byte for byte.
Written offer: for at least three years after we last ship this version, we give anyone a copy of this source for no more than the cost of sending it: support@andronix.app, naming the app version.
andronix 2.0.6
2.0.6 (2026-10-07)
Installs that get through
-
The Andronix server moves to api.andronix.app. get.sh and the installer (finding the download, the beta channel, Modded downloads, reports, telemetry) use api.andronix.app first and fall back to the old products.andronix.xyz only when it can't be reached.
-
A package-signing key problem is named as such. On some phones Arch's key tool (gpg-agent) won't start under proot, so the first package refresh can't make the keyring. The installer now clears the half-made keyring and tries once more, and if it still fails it says so (instead of "Couldn't reach the package servers") and asks for a report. Other non-network failures while refreshing package lists no longer say the servers were unreachable.
Termux:X11
- A missing Termux:X11 app is named at the end of the install. When a desktop install finishes and the Termux:X11 app isn't installed, a box says where to get it (termux-x11-universal-debug.apk from the nightly release) and links the docs page with pictures.
andronix desktopshows the same box. When Android won't say whether the app is installed and Termux:X11 then doesn't start, the fix names the app first.
Telemetry
- With telemetry on, a failed install or update caused by the distro's package manager also reports proot's version and whether Termux started andronix through Android's linker (Play Store Termux), to find why package lists fail on some Play Store Termux phones with older kernels.
andronix 2.0.5
2.0.5 (2026-10-06)
Phones with older kernels
- The desktop isn't ruled out any more. On phones whose Linux kernel is older than 4.8, the warning now says the desktop may stay black, and what to try then (
andronix desktop --legacy-drawing, or VNC withvncserver-start), instead of suggesting a command-line-only install. Desktops work on many such phones.
Installs that get through
- A failing apt hook no longer stops the install. Under proot, some optional apt hooks fail (command-not-found's database, appstream). The installer turns off just the hook that failed and goes on, and
/etc/andronix/apt-hooks-disabled.txtsays how to turn it back on. - A Wi-Fi sign-in page or filter is named as such. When downloads arrive changed ("InRelease is not signed", "NOSPLIT") on every mirror, the message says to sign in to the Wi-Fi or switch networks, instead of blaming the mirrors.
- When proot refuses an option, the installer tries again with only the basic ones, and suggests reinstalling proot if that fails too.
andronix pack debian …typed inside a distro drops the distro name: packs go into the distro you're in.- Stopping the user setup with Ctrl+C no longer leaves you as root. During the install it now says the distro is installed but your user isn't set up, and doesn't open a root shell. On the first start, Ctrl+C at the same questions leaves the distro instead of staying as root. Either way, the next start asks again.
andronixworks under any name or path on Play Store Termux. A copy run as./andronix-newor from another folder no longer reads its own path as the command ("Unknown command '/data/…'").- Termux commands typed inside a distro say where to type them.
andronix install,start,remove,update,list,backup,restore,clean,tune,displayanddoctortyped inside a distro now show the same two steps asandronix desktop(type exit, then run it in Termux), instead of failing with "proot is missing".
Black screens
- LXQt shows its wallpaper again on phones under 3 GB of RAM. The light profile's settings hid LXQt's desktop defaults, so the desktop came up black (panel only) since 2.0.0.
andronix updaterepairs existing installs, including desktops that saved the black settings. On Debian, LXQt's panel was black too: the light profile hid LXQt's own default settings (theme and panel layout), and now keeps them.
Settings survive a sudden stop
- Android can stop Termux at any moment. The installer's small settings files (the install's state, the performance profile, the distro's release info, telemetry's choice) are now written so that they're either the old version or the new one, never empty. An empty profile file left by an older version counts as unset.
Faster desktops
- XFCE's first start is faster. A new home's first desktop start no longer waits while the window manager saves about 80 default settings one at a time. The installer and
andronix updatewrite those defaults once, system-wide, when the distro has none. Nothing looks different, and your own settings still win.
Telemetry
- With telemetry on,
andronix desktopreports once, 20 seconds in, whether the Termux:X11 screen shows anything (a yes or no, plus the kernel version), so decisions about older kernels can rest on data. A few rows of the screen are read into memory to tell; no picture is kept or sent.