我正在尝试将 Android 应用程序移植到 Linux(别笑:),但我遇到了一个问题。app_process
添加可执行权限后尝试执行 Android 可执行文件 ( ) 时,./app_process
虽然可以运行,但显示它不存在cat ./app_process
。
另外,在我的文件管理器(Pantheon Files)中,可执行文件显示共享库图标。
有什么办法可以让这些在 Linux 上执行吗?
答案1
Android和Linux是两种不同的操作系统。您不能只从一个中获取可执行文件并在另一个上运行它。
第一个障碍是内核。 Android 和 Linux 基于相同的内核,但它们有一些不同的功能。特别是,Android 提供粘合剂,自 3.19 版本以来仅存在于主流内核(Linux 发行版中)。纯本机代码应用程序可能不使用绑定器,但大多数 Java 应用程序都会使用。
第二个障碍是动态库。如果您有动态链接的可执行文件,它会调用动态链接器。 Android 和 Linux 有不同的动态链接器,如果动态链接器不存在,您会收到与可执行文件本身不存在相同的错误。
如果您复制动态链接器及其所需的配置文件以及本机库,那么您应该能够运行大多数本机程序。您需要复制大部分/system
,并且副本需要位于/system
。
如果你想运行Java应用程序,那就更复杂了。您需要 Java 运行时环境 (Dalvik/ART),并且大多数应用程序还需要一些 Android 守护进程(一些本机代码应用程序也需要这些守护进程)。
结果是,虽然两个系统可以在一个内核上共存,但这需要是一个足够新的内核,或者 Android 内核(Android 内核可以运行大多数 Linux 应用程序),并且两个操作系统都需要安装— 您不能只从一个应用程序运行另一个应用程序。
我不知道在 Linux 上有任何现成的 Android 安装程序。然而,也有相反的安装程序,特别是Android上的Linux。
如果目标是在 Linux 系统上运行 Android 应用程序,那么迄今为止最简单的方法是在模拟器中运行它,模拟器是安卓开发工具。