Linux で Android x86 実行ファイルを実行できないのはなぜですか

Linux で Android x86 実行ファイルを実行できないのはなぜですか

Android アプリを Linux に移植しようとしていますが (笑わないでください :)、問題が発生しました。Android 実行可能ファイル ( app_process) を実行しようとすると、実行権限を追加した後、動作はする./app_processものの存在しないというメッセージが表示されますcat ./app_process

また、ファイル マネージャー (Pantheon Files) では、実行可能ファイルに共有ライブラリ アイコンが表示されます。

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

答え1

AndroidとLinuxは2つの異なるオペレーティングシステムです実行可能ファイルを一方から取得して、他方で実行することはできません。

最初のハードルはカーネルです。AndroidとLinuxは同じカーネルをベースにしていますが、いくつかの機能が異なります。特にAndroidはバインダーこれは、バージョン 3.19 以降のメインストリーム カーネル (Linux ディストリビューションに含まれるカーネル) にのみ存在します。純粋なネイティブ コード アプリケーションではバインダーを使用しない場合がありますが、ほとんどの Java アプリケーションではバインダーが使用されます。

2つ目のハードルは動的ライブラリです。動的にリンクされた実行ファイルがある場合、動的リンカーが呼び出されます。AndroidとLinuxでは動的リンカーが異なり、動的リンカーが存在しない場合は、実行ファイル自体が存在しない場合と同じエラーが発生します

ダイナミック リンカーと、それに必要な構成ファイル、およびネイティブ ライブラリをコピーすると、ほとんどのネイティブ プログラムを実行できるようになります。 の大部分をコピーする必要があり/system、そのコピーは に配置する必要があります/system

Java アプリを実行する場合は、さらに複雑になります。Java ランタイム環境 (Dalvik/ART) が必要であり、ほとんどのアプリでは Android デーモンも必要です (一部のネイティブ コード アプリでもこれらのデーモンが必要です)。

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

Linux上でAndroid用の既製のインストーラーは知りません。ただし、逆の場合はインストーラーがあります。Linux と Android

LinuxシステムでAndroidアプリを実行することが目的の場合、最も簡単な方法は、Androidアプリをエミュレータ内で実行することです。Android開発ツール

関連情報