Add 32-bit ARM support and a lightweight desktop for low-memory phones - #42
Open
encryptedtouhid wants to merge 2 commits into
Open
encryptedtouhid wants to merge 2 commits into
encryptedtouhid wants to merge 2 commits into
Conversation
DroidDesk shipped arm64 only, so it would not install on the many budget Android phones that still run a 32-bit system. This builds an armeabi-v7a variant next to the existing arm64 one. Runtime: - Bundle 32-bit builds of the native libraries under jniLibs/armeabi-v7a: the Xlorie X server, proot and its loader, talloc, the shared-memory shim, and the socket hook. - Add a matching 32-bit Termux bootstrap and choose the right archive at runtime from the device's primary ABI. - Turn on armeabi-v7a in the Gradle ABI filters. Lite mode for low-memory hardware: - Detect low-RAM devices and start them on a minimal Openbox session with a panel, file manager, and terminal rather than a full desktop. - Turn off the compositor and skip recommended-but-optional packages so the install fits within a couple of gigabytes of RAM. Fixes uncovered while taking a low-end device through setup: - The bootstrap extractor left apt's download methods without an execute bit, so package configuration failed with "method https has died unexpectedly". The execute bit is now restored on lib/apt/methods. - Launching the desktop used the picker default instead of the desktop that was actually installed, which then tried to reinstall the wrong one. It now launches whatever is installed. - Display scaling asked an Activity for a system service before it was ready and crashed on launch. It reads from an application context now. - The desktop rendered at a third of the screen size and looked blocky. Low-memory devices render at native resolution instead.
Captures the low-RAM device picking Openbox automatically, the arm package install running, and setup finishing.
Author
|
@orailnoor would you please have a look at the pr :) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this does
DroidDesk only shipped an arm64 build, which left out the many budget Android phones that still run a 32-bit system. This adds an armeabi-v7a build so those devices can install and run the Linux desktop.
Runtime changes
jniLibs/armeabi-v7a: the Xlorie X server, proot and its loader, talloc, the shared-memory shim, and the socket hook.armeabi-v7ais enabled in the Gradle ABI filters.Lite mode for low-memory devices
Phones with around 2 GB of RAM now start on a minimal Openbox session instead of a full desktop. The compositor stays off and the optional "recommended" packages are skipped, which keeps the install small enough to finish without running the device out of memory.
Fixes found along the way
Taking a low-end phone all the way through setup turned up a few real bugs:
Walkthrough on a 32-bit device
A low-RAM phone taken from first launch to a running desktop.
The Openbox desktop running with software rendering: