Perchè è impossibile che Google porti il V8 insieme al codice di Chrome in C / Obj-C su iOS?

5

Google ha spiegato che tutte le app su iOS devono essere eseguite nell'ambiente sandbox ad eccezione delle app speciali di Apple che possono accedere ad alcune API private.

Quindi Chrome su iOS utilizza tutto ciò che fornisce UIWebView, oltre a fare la sua interfaccia utente e alcune cache esterne per aggiungere qualcosa in più.

Ma perché Google ha bisogno di accedere al motore Nitro a cui ha accesso Safari su iOS.

Chrome non può portare l'intero motore webkit e V8 per iOS?

Xamarin 2.0 gestisce il port mono (.net runtime) su iOS insieme ad ogni app.

    
posta Amogh Talpallikar 16.05.2013 - 14:45
fonte

1 risposta

6

Ci sono due ragioni.

  1. Apple desidera rivedere tutto il codice eseguito su un dispositivo iOS per garantire la qualità della piattaforma complessiva. Ovviamente, per rivedere il codice, è necessario avere esso. Quindi, Apple richiede che tutto il codice eseguito dalla tua app, debba essere parte dell'app o parte delle API pubbliche di iOS. puoi incorporare un motore di esecuzione nella tua app, ma non puoi eseguire codice scaricato dal web. Tuttavia, il punto intero di un motore ECMAScript in un browser web è quello di eseguire codice arbitrario dal web.

  2. [Nota: non ne sono sicuro al 100%.] Il modello di sicurezza iOS non consente a un'app di eseguire codice nativo dalla memoria scrivibile. La memoria è scrivibile o eseguibile (ma di sola lettura). Tuttavia, V8 è un puro compilatore, non ha un interprete. Compila ECMAScript in codice nativo in memoria, quindi lo esegue. Ma il modello di sicurezza lo impedisce. Quindi, Google dovrebbe prima sviluppare un interprete per V8. Ma ciò potrebbe essere potenzialmente devastante per le prestazioni e sarebbe un notevole sforzo di sviluppo.

Xamarin 2.0 manages to port mono (.net runtime) on iOS along with every app.

  1. Il codice che viene eseguito dal runtime Mono in questo caso è tutto parte dell'app. Nessun codice viene scaricato da nessuna parte.

  2. Mono contiene un interprete.

risposta data 16.05.2013 - 16:41
fonte

Leggi altre domande sui tag