為什麼我無法在 Linux 上執行 Android x86 執行文件

為什麼我無法在 Linux 上執行 Android x86 執行文件

我正在嘗試將 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 應用程序,那麼迄今為止最簡單的方法是在模擬器中運行它,模擬器是安卓開發工具

相關內容