IMO a better link than a short paragraph on Wiki.
IMO a better link than a short paragraph on Wiki.
FWIU:
- Android Q+ disallows exec() on anything in $HOME, which is where termux installed binaries that may have been writeable by the executing user.
- Binaries installed from APKs can be exec()'d, so termux must keep APK repacks rebuilt and uploaded to a play store.
- Termux shouldn't be installed from Google Play anymore: you should install termux from the F-Droid APK package repos, and it will install APKs instead of what it was doing.
- Compiling to WASM with e.g. emscripten or WASI was one considered alternative. "Emscripten & WASI & POSIX" https://github.com/emscripten-core/emscripten/issues/9479
- It seems C compiled with clang on the device wouldn't be executable? (If it was, that would be a way around the restriction: distribute packages as source, like the good old days)
> offer users the option of generating an apk wrapping their native code in a usable way. https://github.com/termux/termux-app/issues/1072#issuecommen...
This seems a promising solution: compile from source, create an apk, install - your custom distribution! For popular collections of packages, a pre-built apk.
- Java might be explicitly blocked, being a system language for android, even though its byecode is interpeted and not exec()ed.
- Other interpreted languages should be OK e.g. python
> This seems a promising solution: compile from source, create an apk, install - your custom distribution! For popular collections of packages, a pre-built apk.
FPM could probably generate APKs in addition to the source archive and package types that it already supports.
The conda-forge package CI flow is excellent. There's a bot that sends a Pull Request to update the version number in the conda package feedstock meta.yml when it detects that e.g. there's a new version of the source package on e.g. PyPI. When a PR is merged, conda-forge builds on Win/Mac/Lin and publishes the package to the conda-forge package channel (`conda install -y -c conda-forge jupyterlab pandas`)
The Fedora GitOps package workflow is great too, but bugzilla isn't Markdown by default.
Keeping those APKs updated and rebuilt is work.
As of Android 10, PGO data files are uploaded into the store and shared across similar devices so that the AOT compilation with PGO can be done right away on installation.
Having bytecodes doesn't mean being interpreted.
You can run interpreters, but possibly in a restricted context in the future.
Apparently this is plugs a vulnerability known as W^X. See their explanation in the issue here[0]. Personally I would love to know how many real-world exploits they can blame on this specific vulnerability, stacked up against the number of truly useful apps like Termux that have now been hamstrung.
Also, this leaves the state of running native executables on Android as something of a joke. Any executable you want to run has to be named `lib<exe_name>.so`, and included in your jniLib directory at build time.
It's clear what side GOOG has picked in the war on general-purpose computing[1].
> Support for Android 5.x.x - 6.x.x is dropped forever. Time to upgrade your devices or learn how to backport git changes.[1]
And this part from Termux devs reply is especially cynical:
> ... Time to upgrade your devices...[1]
It looks like they has a contract with devices manufacturers...
... No, I no need such type of "app improvements in new version" which require me to buy a new device.
FTR, In F-Droid Archive[2] repo there is still Termux v0.75 for Android 5.x/6.x (which I'm using on Ido device), but it is horrible because Termux packages repo for Android 5.x/6.x are now disabled[3] too.
[0] https://github.com/termux/termux-app/issues/1516
[1] https://github.com/termux/termux-app/issues/1407#issuecommen...
[2] https://apt.izzysoft.de/fdroid/index/apk/com.termux?repo=arc...
And it would "OK" if there would no releases with new features... but bug fix releases which is worse.
Instead, team (owner & core members) just dropped & disabled everything, leaving Android 5.x/6.x device owners in frozen state.
Even more, team not proposed itself & ignored any proposition from others to at least support Termux for Android 5.x/6.x in LTS-way.
Supporting platforms that old comes with a massive amount of headaches. It is hard enough for big teams of applications with high MRR to do, and is near impossible for a FOSS application to do in perpetuity.
Apple devs has a smart trick how to declare you to buy new iPhone {n+1} just next day after it out: Apple devs just may decrease performance of your previous iPhone {n} fully remotely without any prompts to you and without your permission.[0]
And such remoted control over users costs only $500M single pay - not too much as for Apple at all.[1]
Note that i do not expect someone to do free work for me, i just do not consider a 5 year old device "old" enough to be weird for it to be supported - especially when it works just fine.
Beside Android 5.x/6.x devices, I has Symbian 9.x (Nokia N82) smartphone which works perfectly. And there are a lot of new apps for it:
- https://old.reddit.com/r/symbian/new
P.S. My 10+ year-old laptop perfectly works with latest MX Linux distribution (based on Debian 10 buster) and all modern FLOSS desktop apps (GIMP, FreeCAD, Inkscape, etc.) works like a charm on it.
So, software devs should NOT declare users to buy/upgrade hardware.
With PC the compatibility is quite a success story, but hardly the standard.
But if users want third parties volunteers to support devices whose vendors have already dropped support? If there are no volunteers wanting to do the work, the work doesn't get done.
The bad guys here are the phone vendors, not the Termux developers IMHO.
Here is Termux devs reply to Termux user:
> ... Time to upgrade your devices...[0]
Who is bad guy here according this quote?
P.S. It would not be so bad if devs just says "we don't support such devices", but instead devs declared to upgrade device in reply to user...
[0] https://github.com/termux/termux-app/issues/1407#issuecommen...
I mean, I'll admit its tone is quite direct - I guess they could have copy-pasted some corporate-speak about what a difficult decision it was and how very sorry they were about having to make it, instead of being so direct and unambiguous. But that's pretty trivial IMHO.
If you feel so strongly about it, why don't you fork the project and continue integrating upstream features and fixes for those on pre 7.x devices? Or would that take too much of your own time to do?
And I feel free to tell my personal POV on this situation, as you and everyone else.
But in general, hell fucking no. 5 years is terribly short sighted. Look at how much e-waste is piling up. We can't really recycle phones. They get shipped to Asian and African countries where people melt down the plastic without adequate ventilation and extract out all the metals they can in OSHA free environments.
We should be designing things to be as useful as possible for as long as possible.
They are not obligated to support them, feel free to support all Android versions at once in your project.
This reply to Termux user is Termux devs fault:
> ... Time to upgrade your devices...[0]
[0] https://github.com/termux/termux-app/issues/1407#issuecommen...
And a bit of failure to buy something where there are updates.