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


28

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


1
デスクトップ環境は、アプリケーションとの互換性の大きな要因です。
パトリックC.ジェームズ14年

8
これは実際には非常に良い質問です。確かにヌービーですが、非常に有効です。賛成票を持っている。
don.joey

これは、「はい」または「いいえ」の結論を超えて簡単に調査できるものではないため、@ don.joeyに同意します。
MGodby

最新のubuntuライブに関する興味深い議論があり、このトピックの大部分をカバーしました:youtube.com/watch ?feature=player_embedded&v=etMduYRRwDc 25:00 27:10 52:45 54:47 55:20 <関連するいくつかのタイムスタンプポイント
マテオ14年

また、CPUが異なる可能性が高いことも問題ではありませんか?
ケビンFegan

回答:


24

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

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

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


3
10倍強力なデスクトップで一連の電話ライブラリを正しく実行するのは非常に非効率ですか?私たちは、10年前からデスクトップ上で携帯電話エミュレータを実行しています。
MSalters

3
私は、質問者が本来、つまりエミュレータや仮想化なしを意味するという前提で答えました。
MGodby

5
@MSaltersエミュレータは、ネイティブプログラムと比較して、より多くのリソースを使用して同じ出力を生成します。それはほとんど非効率の定義です。そして、私の経験ではAndroidエミュレーターは特に遅いです。
jmathew

1
@jmathew開発者の観点から(少なくとも私の場合)、それに対する利点の1つは、アプリが低速のマシンのエミュレーターで適度に実行される場合、そこにある低価格の格安電話の山で適度に実行されることです。
zxq9 14年

2
@jmathew MSaltersが言おうとしていたことは、エミュレータを数年間使用することが実用的だったとき、同じものをネイティブに実行するのが非効率になる方法はないということでした。
カスペルド

1

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


1

あなたの質問への答えは大きいです。

AndroidUbuntuタッチとは完全に異なりますが、AndroidはLinuxカーネルに基づいていますが、AndroidのネイティブアプリケーションがLinux上で実行できることを意味するわけではありません。

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.