Android基于Linux;原生 Linux 应用程序可以在 Android 上运行吗?
原文由 Prabhu R 发布,翻译遵循 CC BY-SA 4.0 许可协议
Android基于Linux;原生 Linux 应用程序可以在 Android 上运行吗?
原文由 Prabhu R 发布,翻译遵循 CC BY-SA 4.0 许可协议
这取决于您所说的“Linux 应用程序”是什么意思,以及您希望实现的目标。
首先,如果您的意思是,您能否将 x86-64 Linux 二进制可执行文件复制到运行在 ARMv7 处理器上的 Android 设备并运行它……不,这根本行不通,原因有几个。
如果您的意思是,您能否在运行于 Android 的 Linux 模拟器中运行 Linux 程序,当然……有限制。看看“Termux”。有了它,您可以运行许多命令行应用程序。使用在 Termux 中运行的 VNC 服务器,您可以运行一些 Linux X GUI 应用程序,并在 VNC 客户端中使用它们(请参阅 Termux Wiki)。还有“Termux:GUI”——我从未尝试过。
如果您的意思是,是否可以编译旨在在 Linux 下运行的应用程序,以便它们可以作为原生 Android 应用程序运行,这取决于。
在 Android 4 之前,您可以在 Linux 下为 ARMv7 交叉编译 C“Hello World”, adb push
将其编译到 Android 手机上,然后在 Android 终端模拟器中运行。我已经做了。但是最近的 Android 系统的安全模型使这变得更加棘手:没有办法赋予这样的文件 Linux 可执行权限。 ( chmod 777
不起作用。)在有根设备上,这样的事情仍然是可能的。
我怀疑可以安装本机 ARMv7 二进制文件(即使没有 NDK — 比如说,只是一个“Hello World”,它不需要所有这些),以及 Android 应用程序安装,以便从应用程序。这只是权限问题。我还没弄清楚怎么做。
但是“Hello World”并不是真正的 Linux 应用程序。 Linux 应用程序将使用 Linux 系统和库。即使在有根设备上,Android 中剩余的 Linux 也受到了极大的限制和改变。您必须建立必要的软件基础架构来运行更复杂的应用程序。这可能是一项不切实际的任务。
但是,如果您要这样做… 将设备 root 并在其上安装 Linux 不是更好吗?这也是可以做到的。有时。
原文由 Steve White 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答798 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
一般来说,没有。 Android 应用程序通常在类似 Java 的沙盒虚拟机中运行,因此必须用 Java 或某种可以编译为使用 Android API 的虚拟机字节码的语言编写。
但是,虚拟机确实运行在底层 Linux 操作系统之上,并且有一些方法可以调用本机代码。见 https://developer.android.com/tools/sdk/ndk/index.html
因此,虽然在技术上可以运行本机 Linux 程序,因为在所有东西下都有一个 Linux 内核在运行,但大多数用户将无法安装或使用此类应用程序。 (如果您具有 root 访问权限或正在构建自己的固件,那么您可以做任何您想做的事情。)