Sui*_*oga 5 linux executable android elf shared-library
我正在尝试将 Android 应用程序移植到 Linux(不要笑:),但我遇到了一个问题。app_process
在添加可执行权限后尝试执行 Android 可执行文件 ( )./app_process
时表示它不存在,但cat ./app_process
有效。
同样在我的文件管理器(Pantheon Files)中,可执行文件显示了共享库图标。
有什么方法可以让这些在 Linux 上执行。
Gil*_*il' 10
Android 和 Linux 是两种不同的操作系统。你不能只从一个中获取一个可执行文件并在另一个上运行它。
第一个障碍是内核。Android 和 Linux 基于相同的内核,但它们具有一些不同的功能。特别是,Android 提供了binders,自 3.19 版本以来,它只存在于主流内核(Linux 发行版中的内核)中。纯本机代码应用程序可能不使用绑定器,但大多数 Java 应用程序使用。
第二个障碍是动态库。如果您有一个动态链接的可执行文件,它会调用动态链接器。Android 和 Linux 具有不同的动态链接器,如果动态链接器不存在,您会得到与可执行文件本身不存在一样的错误。
如果您复制动态链接器、它需要的配置文件和本机库,那么您应该能够运行大多数本机程序。您需要复制大部分/system
,并且副本需要位于/system
。
如果您想运行 Java 应用程序,那就更复杂了。您需要 Java 运行时环境 (Dalvik/ART),并且大多数应用程序也需要一些 Android 守护进程(一些本机代码应用程序也需要那些恶魔)。
结果是,虽然两个系统可以共存于一个内核,但这需要一个足够新的内核,或者一个 Android 内核(一个 Android 内核可以运行大多数 Linux 应用程序),并且两个操作系统都需要安装——你不能只需从一个运行一个应用程序。
我不知道在 Linux 上有任何现成的 Android 安装程序。然而,也有相反的安装程序,特别是LinuxonAndroid。
如果目标是在 Linux 系统上运行 Android 应用程序,那么目前最简单的方法是在模拟器中运行它,模拟器是Android 开发工具的一部分。
归档时间: |
|
查看次数: |
2478 次 |
最近记录: |