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開発ツール。