web-dev-qa-db-ja.com

GoogleがiOSのC / Obj-CでChromeのコードベースとともにV8を移植できないのはなぜですか?

Googleは、一部のプライベートAPIを利用するAppleによる特別なアプリを除いて、iOS上のすべてのアプリをサンドボックス環境で実行する必要があるという理由を述べています。

したがって、iOSのChromeは、UIWebViewが提供するものをすべて使用し、それに加えて、UIスタッフやいくつかの外部キャッシュを実行して、何かを追加します。

しかし、なぜGoogleはiOS上のSafariがアクセスできるNitroエンジンにアクセスする必要があるのですか。

IOS用のWebkitエンジンとV8全体をChrome移植できませんか?

Xamarin 2.0は、すべてのアプリと共にiOSでモノ(.netランタイム)を移植するために管理します。

5

理由は2つあります。

  1. Appleは、プラットフォーム全体の品質を確保するために、iOSデバイスで実行されるすべてのコードを確認したいと考えています。明らかに、コードをreviewにするためには、haveにする必要があります。したがって、Appleでは、アプリによって実行されるすべてのコードが、アプリの一部またはパブリックiOS APIの一部である必要があります。canを埋め込むcannot Webからダウンロードされたコードを実行します。ただし、WebブラウザーのECMAScriptエンジンのwhole pointは、ウェブ。

  2. [注:100%確実ではありません。] iOSセキュリティモデルでは、アプリが書き込み可能なメモリからネイティブコードを実行することを許可していません。メモリは書き込み可能または実行可能です(ただし読み取り専用)。ただし、V8は純粋なコンパイラーであり、インタープリターがありません。 ECMAScriptをメモリ内のネイティブコードにコンパイルして実行します。しかし、セキュリティモデルはこれを防ぎます。したがって、Googleは最初にV8のインタープリターを開発する必要があります。しかし、それはパフォーマンスに壊滅的な影響を与える可能性があり、かなりの開発努力になります。

Xamarin 2.0は、すべてのアプリと共にiOSでモノ(.netランタイム)を移植するために管理します。

  1. この場合、Monoランタイムによって実行されるコードはすべてアプリの一部です。コードはどこからもダウンロードされません。

  2. Monoにはインタープリターが含まれています。

7
Jörg W Mittag