Linux 应用程序可以在 Android 中运行吗?

新手上路,请多包涵

Android基于Linux;原生 Linux 应用程序可以在 Android 上运行吗?

原文由 Prabhu R 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

一般来说,没有。 Android 应用程序通常在类似 Java 的沙盒虚拟机中运行,因此必须用 Java 或某种可以编译为使用 Android API 的虚拟机字节码的语言编写。

但是,虚拟机确实运行在底层 Linux 操作系统之上,并且有一些方法可以调用本机代码。见 https://developer.android.com/tools/sdk/ndk/index.html

因此,虽然在技术上可以运行本机 Linux 程序,因为在所有东西下都有一个 Linux 内核在运行,但大多数用户将无法安装或使用此类应用程序。 (如果您具有 root 访问权限或正在构建自己的固件,那么您可以做任何您想做的事情。)

原文由 Kristopher Johnson 发布,翻译遵循 CC BY-SA 3.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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题