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

Linux应用程序可以在Android中运行吗?,android,linux,Android,Linux,Android是基于Linux的;本机Linux应用程序可以在Android上运行吗?一般来说,不能。Android应用程序通常在沙盒式Java虚拟机中运行,因此必须用Java或某种语言编写,以编译成使用Android API的虚拟机字节码 然而,虚拟机确实运行在底层Linux操作系统之上,并且有一些方法可以调用本机代码。看 因此,虽然从技术上讲,运行本机Linux程序是可能的,因为在所有东西下面都运行着Linux内核,但大多数用户将无法安装或使用此类应用程序。(如果您有root访问权限或正在构

Android是基于Linux的;本机Linux应用程序可以在Android上运行吗?

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

然而,虚拟机确实运行在底层Linux操作系统之上,并且有一些方法可以调用本机代码。看


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

Android不运行X Windows,也没有许多标准GNU库。因此,由于大多数本机linux应用程序需要其中一个或两个,因此大多数不会运行


此外,甚至Java程序也可能受到限制,因为编写Android应用程序的Java版本是标准Java库的一个子集。

不是直接的,不是。Android的C运行库bionic与大多数Linux发行版使用的GNU libc不兼容二进制


你可以尝试为Android和pray重新编译你的二进制文件。

是的,如果它们首先在arm linux下编译或使用交叉编译器编译,它们可以。Debian arm万能工程,还有用于在x86 linux下编译到arm linux的arm eabi。

您可以获得在linux上运行的arm交叉编译器。 您还可以下载Android NDK并编译一些命令行应用程序。 我没有任何使用C++的个人经验,但是我已经用两种方法编译了一些简单的东西。据我了解,NDK不是一个完全的C++编译器,因为有人抱怨它不能编译一些普通的C++代码。 请注意,由于我是新用户,我无法发布NDK链接…:/

是的,你可以;-)

最简单的方法是使用此->

旧的链接已经失效了,它是针对Debian安装脚本的,android市场上有一个应用程序就是这样的
但是你需要root,android只使用linux内核,这意味着像gcc as这样的GNU工具链没有在android中实现,所以如果你想在android中运行linux应用程序,你需要用谷歌的工具链(NDK)重新编译它。

是的,你可以。我已经在chroot-jail环境中使用debootstrap安装了一个完整的Debian发行版。(您需要一个根设备) 我现在在htc desire上运行ssh、apache、mysql、php甚至android下的samba服务器,没有任何问题。 可以通过ssh使用远程x服务器运行x应用程序。它甚至运行openoffice.org和firefox。
您可以使用以下方法:在本地主机上运行X-application,但我的HTC需要一个小屏幕以提高效率:-),但它可能在Eee Pad Transformer或类似的设备上非常有用。

是的,他们可以。如果你没有根手机/平板电脑,那么你可以下载c4droid来编译你的应用程序。然后,您可以下载Kevin Boone的KBOX来运行该程序。

当然可以,但有几个限制

Android是一种特殊的Linux发行版,没有像X11那样的suff,并且不能用apt get安装Apache2。但是如果你有ARM交叉编译器,你可以将你的ELF文件复制到设备上,然后从终端应用程序运行它,或者如果你安装了SSHD应用程序,你甚至可以从桌面/笔记本电脑上使用SSH来访问Android设备

若要复制并启动本机Linux可执行文件,您没有根设备。这就是问题所在,我已经将自己的微型Web服务器编译成Android(也适用于webOS),它运行着,hallelujah

问题来了,我无法回答:

  • 我的微型Web服务器只使用stdlib和pthread。我不知道如何使用Android附带的(本机Linux)库,有一些很有用的库,尽管没有它们我也能生活

  • 现在我可以手动从终端应用程序启动我的应用程序。但我不知道,在Android上部署这些本地应用程序的最佳方式是什么。我想我应该写一个小的安卓应用程序,它可以启动服务器,而不会让系统自动停止(比如说,就像音乐播放器从未被杀死一样)。而且,如果它是一个服务,它应该在引导时启动。我不熟悉安卓系统


  • 我认为本文可以提供一个解决方案:
    希望有帮助。

    简短回答,不。 回答很长,若你们安装了一些软件,你们可以运行Linux应用程序

    为了避免设备根化,您可以尝试GnuRoot和XSDL组合来获得一个最小的chrooted环境(实际上,它使用proot来启用无根chrooted jail),或者获得Debian Noroot应用程序,该应用程序将前两个应用程序组合在一个虚拟机环境中。 两者都可以从Google Play获取

    然而,也有一些缺点:首先,XSDL和DNR捆绑的X11服务器是一个兼容层,围绕着SDL库和SurfaceFlinger的Android端口。 这意味着,硬件加速的OpenGL图形不可用,甚至声音支持也需要一些技巧。因此,作者选择了一个简单的桌面环境:XFCE4,适用于低内存且不支持3D。 第二个问题是直接硬件访问的DNR虚拟机的不兼容性,因为它需要真正的根权限。所以你不能刻录DVD,用USB电缆打印,。。。即使是作者的项目也有可能在未来找到解决办法。 最后,此解决方案允许安装用户空间程序,如LibreOffice、Gimp、Samba等,。。。而不是内核空间模块


    即使有这样的限制,DNR也是一个功能强大的程序。

    是的,我已经在多台根机器上完成了这项工作 我通过dd在SD卡上设置了DebianLinux。 我在/system/bin上复制此脚本

    我还没有成功运行Xserver,但我可以通过android Xserver应用程序使用xwindows二进制文件

    我可以运行update