The “Linux under PRoot” feature and Android 10
Use it on your own risk!
Facts
-
Google has enforced target API >= 29 (
targetSdkVersion
) for all application updates on Google Play since November 1 2020. -
Any application targets API >= 29 cannot
execve()
any binaries from file tree locations writable by it on Android 10 and higher. This new behavior interferes with the “Linux under PRoot” feature.
Solutions
Another Term was split into two flavors:
-
green_green_avk.anotherterm.oldgood
is still targeting API 28 and published on GitHub only. -
green_green_avk.anotherterm
became targeting API 29 and is still published on Google Play. Another Term Shell Plugin - Android 10 Essentials was created in order to provide PRoot and minitar for Android 10 and higher and thus keep the “Linux under PRoot” feature in a working state. (Another Term is a multi-purpose tool that’s why it’s better to avoid inflating its size with things that can never be used or substituted by users’ own implementations.)
Using Another Term Shell Plugin - Android 10 Essentials
1) Install it from GitHub (as it seems incompatible with the Google Play policy).
2) Enable it and set it “Always accessible” in the Another Term “Plugins” settings.
3) Install a new Linux root as recommended
or fixup your existing installations by executing this snippet:
for F in $DATA_DIR/proots/*/root/etc/proot/run
do
"$TERMSH" cat 'https://raw.githubusercontent.com/green-green-avk/AnotherTerm-scripts/master/assets/run-tpl' > "$F"
echo 'PROOT="$("$TERMSH" plugin green_green_avk.anothertermshellplugin_android10essentials proot)"' >> "$F.cfg"
echo 'PROOT_USERLAND="$("$TERMSH" plugin green_green_avk.anothertermshellplugin_android10essentials proot-userland)"' >> "$F.cfg"
done
and manually prepending the “Exectute” field value of each related favorite by sh
.