web-dev-qa-db-ja.com

AndroidアプリはUbuntu touchでネイティブに実行できますか?

なぜAndroidアプリが buntu Touch でネイティブに実行できないのか疑問に思っています。つまり、すべてLinuxだけではないのでしょうか。

28
user287536

短い答えは「いいえ」です。

厳密に言えば、Linuxカーネルは、それが実行されているハードウェアへの直接的なインターフェース以上のものを提供しません。 Androidアプリケーションが依存する追加のAndroidフォン固有のAPI、プログラム、アプリケーションなどのスタックがあります。さらに、Androidは汎用Linuxカーネルでは実行されませんが、代わりに、OSを実行するという特定の目的でGoogleによって高度にカスタマイズされたカーネルで実行されます。

Androidアプリケーションを別のシステムで実行するために必要なスタック全体を技術的に再現できたとしても、肥大化し、非常に効率が悪くなります。

24
MGodby

Nokia n900はmaemoを実行します魔女はLinux OSですが、開発されたdalvik環境を介してAndroidのアプリを実行できますが、市場に投入することもレピシトリを発行することもありません。どうして? n900でdalvikを開発した社会だけが知っています。今、別のイニシアチブ呼び出しapkenvがありました。 n900でいくつかのAndroidゲームを実行するために追加するものはそれほど多くないようです。また、gpuまたはcpu powerまたはmaemoのデスクトップに関係なく、アプリはエミュレーションのようにいくつかの湖で実行されますが、一部は完全に実行されますありません。したがって、ubuntu touchについては技術の問題ではありません(間違っているかもしれませんが、1つの公式ubuntuのタッチフォンはAndroidにも使用されているxiaomiですので、この場合はハードウェアも問題ではありません) Googleは、ubuntuがAndroidアプリを実行し、2番目のリポジトリとしてgoogle playを使用することをGoogleが喜ばないことを承諾します(.apbを.debとしてダウンロードしてからインストールすることができます)。

1
patrick

あなたの質問に対する答えはBIG NO。

Androidbuntu Touch とはまったく異なりますが、AndroidはLinuxカーネルに基づいていますが、それはAndroidのネイティブアプリケーションを意味するものではありません_はLinux上で実行でき、その逆も可能です。

異なるOS間のカーネルの類似性は、これらの異なるOS上でアプリケーションを実行可能にしません。カーネルは、システムの最下位のソフトウェア層です。カーネルの上にはユーザー空間があり、これはシステムソフトウェアとアプリケーションインターフェイスで構成されています。

同じカーネルのOSでは、ユーザー空間がまったく異なる場合があり、ネイティブアプリケーションは特定のユーザー空間で実行されます。

さらに、Androidアプリは、通常JavaおよびAndroidアプリを使用して開発され、ランタイム環境で実行されます( Dalvik または ART )は、入力として JVM から bytecode を受け取りますが、Linuxアプリケーションはコンパイル時に machine code に直接変換されます。

C++を使用してAndroid用に開発されたアプリケーションは、Linux環境では直接実行できず、Linuxシステム用に最初にコンパイルする必要があります。

1