2014-11-21 14 views

risposta

3

Si prega di leggere il cromo FAQ.

Chrome è Android open source?

Chrome per Android è derivato da Chromium. Dal lancio della prima versione, abbiamo costantemente aperto tutti i componenti critici. Puoi costruire vari componenti Chromium per Android come utilizzati in Chrome per Android utilizzando le istruzioni here.

8

La mia raccomandazione per una sorta di immersione è di dare un'occhiata alla fonte per http://code.google.com/p/chromiumembedded/.

È una specie di versione condensata di Chrome e se si guardano i file che utilizza in modo specifico, uno incluso nell'albero di origine o i file in esso inclusi dal repository Chromium in generale. La base di codice di Chromium è un'enorme quantità di cose, la maggior parte delle quali non è in realtà nel browser. C'è un sacco di codice inserito da repository di terze parti che vengono poi riassunti nel processo di compilazione o l'implementazione di Chromium si trova da qualche altra parte nell'albero, ci sono molti progetti collaterali che (sebbene interessanti e una risorsa eccezionale per una vasta gamma di roba) ti impedirà di raggiungere il tuo obiettivo di perfezionare specificamente l'implementazione del browser e il modo in cui combaciano.

CEF è ottimo perché puoi vedere qualcuno che ha già completato il processo di estrazione di tutte queste cose per creare un progetto con un ambito molto specifico nella visualizzazione del browser e nient'altro. Puoi vedere quali parti sono principalmente derivate dal webkit facilmente, puoi vedere dove arriva il crossover con le implementazioni di Google, e puoi vedere abbastanza facilmente come V8 viene gettato nel mix.

Io dico "facilmente" in termini relativi perché stiamo ancora parlando di una quantità enorme di codice nel complesso. CEF ti metterà al centro dei requisiti, ma quella roba sta ancora tirando fuori l'enorme quantità di varie cose dal resto dell'albero. La compilazione mi porta circa un'ora su un computer veramente buono con 12 giga di RAM e 8 core, e i file generati occupano come 6-10 giga a seconda.

Per lo meno, non ci sarà alcun tipo di salto rapido nella parte superficiale per raccogliere qualcosa qua o là pezzo per pezzo. I browser sono necessariamente pezzi di ingegneria incredibilmente complessi, perché devono contenere una quantità enorme di singole funzionalità e quindi combinarle in un contesto condiviso. Potresti trovare l'unica cosa che stai cercando, ma scoprirai che fa parte di una libreria di classi che probabilmente è composta da dozzine o centinaia di file, che a loro volta si affidano a un centinaio di queste librerie per gestire ogni attività , quindi per prendere davvero qualcosa devi impegnarti a prendere molto più di ogni dato dato.

Modifica: oh anche come esempio specifico.

src è root http://src.chromium.org/viewvc/chrome/trunk/src

/cromo http://src.chromium.org/viewvc/chrome/trunk/src/chrome

L'albero "cromo" contiene gran parte delle implementazioni dirette (un sacco di roba non è in là, però, la maggior parte di esso, anche, ma questo è l'inizio punto).Questo ha sovrapposizione con ChromeOS (ChromeOS è una specie di navigatore di cromo portato in un estremo pazza)

/cromo/navigatore http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/

è sempre di chiudere al punto in cui si desidera essere. Inizi a vedere riferimenti specifici a cose che puoi abbinare al browser, come le schede e quant'altro (ignorando il gigantesco elefante dell'attuale implementazione del browser stesso che è ciò che occupa la maggior parte dello spazio mentale in tutte queste cose)

/chrome/browser/ui http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/

Porta dove la maggior parte del codice ui è per il browser. Può essere fonte di confusione quando c'è crossover o quando la roba migra, come se ci fosse un "ui" nella directory root src che ha qualche crossover.

E infine http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/omnibox/

che ha una sorprendentemente piccola quantità di codice in esso. Ma questo è ciò che trovi molto. Il codice qui è un'implementazione di un certo numero di classi che sono state costruite altrove. Per il componente gui non-webview, li troverai per lo più puntati alla radice "ui" e ai widget nativi, che è dove la maggior parte del codice di gestione degli eventi è se ricordo male.

Problemi correlati