Linux

為什麼我不能在 Linux 上執行 Android x86 執行檔

  • June 3, 2016

我正在嘗試將 Android 應用程序移植到 Linux(不要笑 :) 我遇到了一個問題。app_process在添加可執行權限後嘗試執行 Android 執行檔 ( )./app_process時說它不存在,但cat ./app_process可以工作。

同樣在我的文件管理器(萬神殿文件)中,執行檔顯示共享庫圖示。

有沒有辦法讓這些在 Linux 上執行。

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 開發工具的一部分。

引用自:https://unix.stackexchange.com/questions/284467