为什么我不能在Linux上执行Android x86可执行文件

我试图将Android应用程序移植到Linux(不要笑:)我遇到了一个问题.在使用./app_process添加可执行权限后尝试执行Android可执行文件(app_process)时,虽然cat ./app_process正常工作,但它表示它不存在.

同样在我的文件管理器(Pantheon Files)中,可执行文件显示共享库图标.

有没有办法在Linux上执行这些操作.

解决方法:

Android和Linux是两种不同的操作系统.您不能只从一个可执行文件并在另一个上运行它.

第一个障碍是内核. Android和Linux基于相同的内核,但它们有一些不同的功能.特别是,Android提供了binders,它仅存在于3.19版本的主流内核(Linux发行版中的内核)中.纯本机代码应用程序可能不使用绑定器,但大多数Java应用程序都可以.

第二个障碍是动态库.如果您有动态链接的可执行文件,则会调用动态链接器. Android和Linux具有不同的动态链接器,如果不存在动态链接器,则为you get the same error as if the executable itself was not present.

如果复制动态链接器及其所需的配置文件以及本机库,则应该能够运行大多数本机程序.您需要复制大部分/ system,并且副本需要位于/ system.

如果您想运行Java应用程序,那就更复杂了.您需要Java运行时环境(Dalvik / ART),并且大多数应用程序也需要一些Android守护程序(一些本机代码应用程序也需要这些恶魔).

结果是,虽然两个系统可以共存在一个内核上,但这需要是一个足够新的内核,或者一个Android内核(Android内核可以运行大多数Linux应用程序),并且需要安装两个操作系统 – 你不能只需从一个应用程序运行一个应用程序.

我不知道在Linux之上有任何现成的Android安装程序.然而,有另一种安装方式,特别是LinuxonAndroid.

如果目标是在Linux系统上运行Android应用程序,那么到目前为止最简单的方法是在模拟器中运行它,该模拟器是Android development tools的一部分.

上一篇:攻防世界-web-高手进阶区013-ics-06


下一篇:Android SO(ELF)文件格式