导读 你们中许多人可能都知道,Android操作系统由下面的Linux内核提供支持。尽管如此,由于不同的运行时系统和库,Android和Linux应用程序仍不容

你们中许多人可能都知道,Android操作系统由下面的Linux内核提供支持。尽管如此,由于不同的运行时系统和库,Android和Linux应用程序仍不容易互换。但是,您可以启动Termux之类的终端仿真器应用程序,并在任何Android设备上运行。多年来,得益于其庞大的Linux Package Collection,精明的Android用户一直将Termux用作便捷的终端仿真软件以及强大的GNU / Linux环境。不幸的是,由于最近推出的Google Play政策和Android SDK行为更改,该应用程序的开发人员已决定完全停止更新Play商店版本并迁移到F-Droid,因此该应用程序正处于其生命的关键时刻。

自2020年11月2日起,所有对Google Play中现有应用的更新都必须针对Android 10(API级别29)或更高版本。前提条件听起来好像好消息充满了很多乐观情绪,但对于Termux而言,事情并没有完全按照这种方式进行。在该项目的GitHub Wiki上的帖子中,该软件的主要贡献者Leonid Pliushch AKA xeffyr解释了该应用程序与上述API级别的兼容性问题。Google自Android 10起就一直执行W xor X安全功能,这就是为什么设置targetSdkVersion为“ 29”或更高版本的不受信任的应用程序无法调用该应用程序主目录中的文件的原因exec()。这样的设计有效根据API级别29编译时,Termux会中断,因为其所有程序包均包含可执行文件。

您仍然可以在Play商店中找到该应用,但版本严重过时。由于Play商店版本不正式支持Android 10(或更高版本),因此除非将SELinux设置为许可模式,否则它不会在某些设备上启动Shell,这无疑会带来严重的安全隐患。此外,非root用户无法访问/proc/net,这意味着netstat使用该接口数据的其他实用程序将不再起作用。

为什么所有这些更改都不会影响Termux的F-Droid版本?这是因为在提交要包含在F-Droid存储库中的软件包时,没有严格的Android SDK版本要求。与Play商店的变体不同,此处针对Android早于10的较早版本的构建不会受到影响,因此团队可以继续推送更新,而不必担心失去核心功能。