LinuxでAndroid x86実行可能ファイルを実行できない理由

LinuxでAndroid x86実行可能ファイルを実行できない理由

AndroidアプリケーションをLinuxに移植しようとしましたが(笑わないでください)、問題が発生しました。app_process実行権限を追加した後、Android実行可能ファイル()を実行しようとするとうまくいきますが、./app_process存在しないことがわかりますcat ./app_process

また、My File Manager(Pantheon Files)の実行可能ファイルに共有ライブラリアイコンが表示されます。

Linuxでこれを実行する方法はありますか?

答え1

AndroidとLinuxは異なるオペレーティングシステムです。。ある場所から実行可能ファイルをインポートして別の場所で実行することはできません。

最初の障害物はカーネルです。 AndroidとLinuxは同じカーネルに基づいていますが、いくつかの異なる機能があります。特にAndroidは次の機能を提供します。粘着剤、バージョン3.19以降、主流のカーネル(Linuxディストリビューション)にのみ存在します。純粋なネイティブコードアプリケーションはバインダーを使用しないかもしれませんが、ほとんどのJavaアプリケーションはバインダーを使用します。

2番目の障害物は動的ライブラリです。動的にリンクされた実行可能ファイルがある場合は、動的リンカーを呼び出します。 AndroidとLinuxには異なるダイナミックリンカーがあります。動的リンカーがない場合実行ファイル自体が存在しないのと同じエラーが発生します。

動的リンカーと必要な構成ファイル、ネイティブライブラリをコピーすると、ほとんどのネイティブプログラムを実行できます。ほとんどをコピーし、/systemコピーを見つける必要があります/system

Javaアプリケーションを実行するにはもっと複雑です。 Javaランタイム環境(Dalvik / ART)が必要で、ほとんどのアプリケーションにはいくつかのAndroidデーモンも必要です(一部のネイティブコードアプリケーションにはこれらのデーモンが必要です)。

その結果、両方のシステムが単一のカーネルで共存できますが、これは十分に新しいカーネルまたはAndroidカーネルである必要があります(AndroidカーネルはほとんどのLinuxアプリケーションを実行できます)。両方のオペレーティングシステムをインストールする必要があります。- 他のアプリケーションから1つのアプリケーションを実行することはできません。

Linuxに既製のAndroidインストーラがあるかどうかわかりません。しかし、反対のインストーラもあります。特にAndroidのLinux

目標がLinuxシステムでAndroidアプリケーションを実行することであれば、これまでの最も簡単な方法はエミュレータで実行することです。Android開発ツール

関連情報