Can Linux apps be run in Android?

AndroidLinux

Android Problem Overview


Android is based on Linux; can native Linux applications be run on Android?

Android Solutions


Solution 1 - Android

In general, no. Android apps generally run in a sandboxed Java-like virtual machine, so have to be written in Java or some language that compiles to virtual-machine bytecode that use the Android API.

However, the virtual machine does run on top of the underlying Linux OS, and there are ways to call native code. See https://developer.android.com/tools/sdk/ndk/index.html

So, while it is technically possible to run native Linux programs, as there is a Linux kernel running beneath everything, most users would not be able to install such applications or use them. (If you have root access or are building your own firmware, then you can do whatever you want.)

Solution 2 - Android

Yes you can. I have installed a complete Debian distribution in a chroot-jail enviroment using debootstrap. (You need a rooted device) I am now running ssh, apache, mysql, php and even a samba server under android on my htc-desire with no problems. It is possible to run x applications using a remote x server via ssh. It even runs openoffice.org and firefox. You can use this: http://code.google.com/p/android-xserver/ to run X-application on localhost but my HTC-desire has a to small screen to be productive :-) But it might be usefull on a Eee Pad Transformer or something like that.

Solution 3 - Android

Android does not run X Windows, nor does it have many of the standard GNU libraries. So, since most native linux applications require one or both of these, most will not run.

In addition, even Java programs can be limited, because the version of Java that Android applications are written in is a subset of the standard Java library.

Solution 4 - Android

Not directly, no. Android's C runtime library, bionic, is not binary compatible with the GNU libc, which most Linux distributions use.

You can always try to recompile your binaries for Android and pray.

Solution 5 - Android

yes you can ;-)

the simplest way is using this ->http://www.androidfanatic.com/community-forums.html?func=view&catid=9&id=2248</strike>

The old link is dead it was for a Debian install script There is an app for that in the android market but you will need root

Solution 6 - Android

android only use linux kernel, that means the GNU tool chain like gcc as are not implemented in android, so if you want run a linux app in android, you need recompile it with google's tool chain( NDK ).

Solution 7 - Android

I think this article can provide a solution : Linux Today - Compile, Install and Run Linux apps on Android
Hope it helps.

Solution 8 - Android

You can get an ARM cross compiler that runs on Linux here. You can also download the Android NDK and compile some command line apps. I do not have any personal experience with using C++ with either solution, but I have compiled a few simple things with both. It is my understanding that the NDK is not a full C++ compiler as there have been complaints that it will not compile some common C++ code.

Note that since I am a new user, I cannot post the NDK link... :/

Solution 9 - Android

yes i have done that on several rooted machines i set a debian linux on a sdcard by dd. i copy this script http://jeanmichel.gens.free.fr/etc/install on /system/bin

i have not yet succeed to run a Xserver but i can use xwindows binaries through the android Xserver application

i can run update my debian with apt-get upgrade , run an apache server with PHP , run a ssh server and all binaries on a terminal including user management i have also a problem with semaphores handling please contact me if you have any trouble

Solution 10 - Android

Yes they can if they're compiled under an arm linux first or using a cross compiler. Debian arm versatile works, there's also arm-eabi for compiling under x86 linux to arm linux.

Solution 11 - Android

Yes, they can. If you do not have a rooted phone/tablet, then you could download c4droid here to compile your apps. Then, you could download Kevin Boone's KBOX here to run the program.

Solution 12 - Android

Hell, of course yes, with several limitations.

Android is a kinda special Linux distribution, with no usual suff like X11, and you can't install Apache2 with apt-get. But if you have ARM cross-compiler, you can copy your ELF files to the device, and run it from a terminal app or if you have installed some SSHD app, you can even use SSH from your desktop/notebook to access the Android device.

To copy and launch a native Linux executable, you have not root your device. That's the point, where I am, I've compiled my own tiny webserver to Android (and also for webOS), it runs, hallelujah.

There comes the issues, which I can't answer:

  1. My tiny webserver use only stdlib and pthreads. I have no idea how to use the (native Linux) libraries comes with Android, there are useful ones, altough, I can live without them.

  2. Now I can launch my app from a terminal app by hand. But I don't know, what's the best way of deploying such native apps to Android. I think I should be write a small Android app, which launches the server and not letting automatically stopped by the system (say, as like music players never killed). Also, if its a service, it should somehow started on boot. I'm not familiar with Android.

Solution 13 - Android

Short answer, no. Long answer, you can run Linux application if you install some software.

To avoid rooting your device, you can try the GnuRoot and XSDL combo to get a minimal chrooted environment, (Actually, it use proot to enable a rootless chrooted jail), or get the Debian Noroot application, which combine the former two application in a single virtual machine environment. Both can be fetch from Google Play.

However, there is a few drawbacks: first, the X11 Server bundled by XSDL and DNR is a compatibility layer wrapped around a Android port of SDL library and SurfaceFlinger. This means, hardware accelerated OpenGL graphics are not avaliable, and even the sound support requires some hacks. So, the author choose a simple Desktop Environment: XFCE4 suitable to low memmory and no 3D support. The second problem is the incompatibility from the DNR Virtual Machine of direct hardware acess, since it requires real root privileges. So you can't burn DVD, print using USB cables,... even the author's projects may promise a workaround in a future. Finally, this solution enables to install user-space programs like LibreOffice, Gimp, Samba,... not kernel-space modules.

Even with this limitations, the DNR is a very powerfull program.

Solution 14 - Android

You can install chrooted linux distribution alongside android bacause android is based on linux kernel. If your phone is not rooted, you may use fakeroot (easiest way is to use Debinan nonroot app) even with GUI (with android X-server app or via VNC). If you have a rooted phone, you can install almost fully functional distribution.

I think the best performance and the least limitations you can achieve with Gentoo because all software compiles to your native arm architecture and it is the most flexible, but not the easiest. You may be interested in this post about installing Gentoo on android.

Solution 15 - Android

these are all total lies above

  1. Android x86 pie uses linux kernel 4.19 with most PC kernel modules DISABLED (you have to rebuild the kernel yourself for PC hardware - for VM maybe not)

  2. Android installs unix (GNU+freebsd+ubuntu parts google threw together) in, was it, /system/bins

there seems to be some heavy lying going on by ubuntu, rh even android about whether Android has a linux OS

it most certainly does: and, the Java is Sun/Oracle java, and it is intalled as a linux version, and requires a linux OS to load it

  1. You cannot build an app for phones, say it is "for Android" that doesn't sandbox and breaks Android: it's against policy and they will come after you and remove your app off the store for good reasons. HOWEVER: you can do it at home on your personal android if you can afford to be an unpaid developer :)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPrabhu RView Question on Stackoverflow
Solution 1 - AndroidKristopher JohnsonView Answer on Stackoverflow
Solution 2 - AndroidChris de VriesView Answer on Stackoverflow
Solution 3 - AndroidZacharyPView Answer on Stackoverflow
Solution 4 - Androiduser197453View Answer on Stackoverflow
Solution 5 - AndroidsherifView Answer on Stackoverflow
Solution 6 - AndroiddongjkView Answer on Stackoverflow
Solution 7 - AndroiditsfarseenView Answer on Stackoverflow
Solution 8 - AndroidJimRView Answer on Stackoverflow
Solution 9 - Androidjean-michel gensView Answer on Stackoverflow
Solution 10 - AndroidWillView Answer on Stackoverflow
Solution 11 - Androidjhunter_dView Answer on Stackoverflow
Solution 12 - Androidern0View Answer on Stackoverflow
Solution 13 - AndroidArucard1983View Answer on Stackoverflow
Solution 14 - AndroidYuriy NazarenkoView Answer on Stackoverflow
Solution 15 - Androidnobody0666View Answer on Stackoverflow