这件事最让我感觉难受的是,Google 是太懒了么?好像从一开始,甚至一直到今天,都仍然没有在官方文档里写明这件事。
时间线
早在 2013 年,stackoverflow 上就有相关问答,虽然很显然这并不是官方口径:
https://stackoverflow.com/questions/16179062/using-exec-with-ndk
呃虽然不是 Google 官方下场答的,但这个答主的理解被 Google 官方认可了。在 Android 10 执行 R^X 安全政策,禁止从可写的应用数据目录执行原生代码时(但打包在 APK 内并声明会解压到只读位置则仍然允许执行),Google 方面就在解释时引用了上面这个回答:
https://issuetracker.google.com/issues/128554619#comment4
然后 Android 12 时代 Google 同样是在未文档的情况下引入了一个“幽灵进程杀手”机制,连带 W^X 在一起简直是想要 Termux 死……于是 Termux 开发者替 Google 整理了一份文档:
https://github.com/agnostic-apollo/Android-Docs/blob/master/en/docs/apps/processes/phantom-cached-and-empty-processes.md
而且他还跑去 AOSP 官方 issue tracker 据理力争了一把……
值得庆幸的是 Google 还是听进去了一点,在 Android 14 引入了一个开发者选项,可以彻底把幽灵进程杀手关掉:
https://issuetracker.google.com/issues/205156966#comment120