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

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

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

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

所以,尽pipe运行本地Linux程序在技术上是可行的,但由于Linux内核运行在所有东西之下,大多数用户将无法安装或使用这些应用程序。 (如果你有root权限或正在构build自己的固件,那么你可以做任何你想做的事情。)

Android不运行X Windows,也没有许多标准的GNU库。 所以,因为大多数本地Linux应用程序都需要这些应用程序中的一个或两个,所以大多数不会运行

另外,即使Java程序也是有限的,因为编写Android应用程序的Java版本是标准Java库的一个子集。

是的你可以。 我使用debootstrap在chroot-jail环境中安装了一个完整的Debian发行版。 (你需要一个扎根设备)我现在运行ssh,apache,mysql,php甚至是一个在android下的samba服务器,我的htc-desire没有任何问题。 可以通过ssh使用远程x服务器运行x应用程序。 它甚至运行openoffice.org和Firefox。 你可以使用这个: http : //code.google.com/p/android-xserver/在本地主机上运行X应用程序,但我的HTC愿望有一个小屏幕生产:-)但它可能是有用的一个Eee Pad变压器或类似的东西。

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

你总是可以尝试重新编译你的二进制文件为Android和祈祷。

是的你可以 ;-)

最简单的方法是使用这个 – > http://www.androidfanatic.com/community-forums.html?func=view&catid=9&id=2248

旧的链接是死的,这是一个Debian安装脚本有一个在Android市场的应用程序,但你将需要根

我认为这篇文章可以提供一个解决scheme: 今天的Linux – 在Android上编译,安装和运行Linux应用程序
希望能帮助到你。

您可以在这里获得一个在Linux上运行的ARM交叉编译器。 您也可以下载Android NDK并编译一些命令行应用程序。 我没有任何使用C ++的解决scheme的个人经验,但我已经编译了两个简单的东西。 我的理解是NDK不是一个完整的C ++编译器,因为有人抱怨说它不会编译一些常见的C ++代码。

请注意,由于我是一个新用户,我不能发布NDK链接…:/

android只使用linux内核,这意味着像gcc这样的GNU工具链在android中没有实现,所以如果你想在android中运行一个linux应用程序,你需要用google的工具链(NDK)重新编译它。

是的,我已经做了几个根植的机器上,我设置了一个debian linux的SD卡由dd。 我复制这个脚本http://jeanmichel.gens.free.fr/etc/install on / system / bin

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

我可以运行更新我的debian与apt-get升级,与PHP运行Apache服务器,运行一个SSH服务器和一个terminal上的所有二进制文件,包括用户pipe理我也有信号处理的问题,请与我联系,如果你有任何麻烦

是的,如果他们首先在linux下编译或使用交叉编译器,那么他们可以。 Debian arm多function的作品,还有arm-eabi在x86 linux下编译来武装linux。

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

地狱,当然是的,有几个限制。

Android是一种非常特殊的Linux发行版,通常没有像X11那样的标签,而且你不能用apt-get来安装Apache2。 但是,如果您有ARM交叉编译器,则可以将ELF文件复制到设备,然后从terminal应用程序运行,或者如果您已经安装了某些SSHD应用程序,甚至可以使用桌面/笔记本上的SSH访问Android设备。

要复制和启动本机Linux可执行文件,您没有root设备。 这是关键,我在哪里,我已经编译我自己的小webserver到Android(也为webOS),它运行,哈利路亚。

有问题,我不能回答:

  1. 我的小webserver只使用stdlib和pthreads。 我不知道如何使用Android的(本地Linux)库,有一些有用的,虽然我可以没有他们的生活。

  2. 现在我可以手动从terminal应用程序启动我的应用程序。 但是我不知道,将这种原生应用程序部署到Android的最佳方式是什么? 我想我应该写一个小型的Android应用程序,它启动服务器,而不是让系统自动停止(就像音乐播放器永远不会被杀死一样)。 另外,如果它的服务,它应该以某种方式启动启动。 我不熟悉Android。

简短的回答,没有。 长的答案,如果你安装了一些软件,你可以运行Linux应用程序。

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

但是,有一些缺点:首先,由XSDL和DNR捆绑在一起的X11 Server是一个兼容性层,包裹在SDL库和SurfaceFlinger的Android端口上。 这意味着,硬件加速OpenGLgraphics不可用,甚至声音支持需要一些黑客。 所以,作者select了一个简单的桌面环境:XFCE4适合于低内存和没有3D支持。 第二个问题是直接硬件访问的DNR虚拟机不兼容,因为它需要真正的root权限。 所以你不能刻录DVD,使用USB电缆打印,甚至作者的项目可能会承诺在未来的解决方法。 最后,这个解决scheme能够安装LibreOffice,Gimp,Samba等用户空间程序,而不是内核空间模块。

即使有这个限制,DNR是一个非常强大的程序。

你可以安装chrooted linux发行版和android一起使用。bacause android基于linux内核。 如果你的手机没有植根,你甚至可以使用fakeroot(最简单的方法就是使用Debinan非root应用程序),即使在GUI(使用android X-server应用程序或通过VNC)。 如果你有一个根深蒂固的手机,你可以安装几乎全function的分配。

我认为用Gentoo可以达到最好的性能和最小的限制,因为所有的软件都可以编译到你的native arm架构,而且是最灵活的,但并不是最简单的。 你可能会对这篇关于在an​​droid上安装Gentoo的文章感兴趣。