2012-01-28 35 views
48

Ho scaricato il codice sorgente Android. E voglio apportare alcune modifiche al codice sorgente per incorporare alcune funzionalità che al momento non esistono. Ma il problema qui è che non sono in grado di capire come sia organizzato il codice sorgente, che tipo di file possa trovare dove. Quindi, se qualcuno potesse aiutarmi a capire che sarebbe davvero utile.Come capire la struttura delle directory dell'albero radice di Android?

+2

Inoltre può fare riferimento al seguente link: https://groups.google.com/forum/?fromgroups=#!topic/android-platform/QhrA3RayT-U –

+2

È possibile fare riferimento a questo [Descrizione codice sorgente Android] (http: //elinux.org/Android-4.1.1_r4) su eLinux, basato su Android-4.1.1-r4. Spiega cosa c'è nelle cartelle. Anche questo [Panoramica sul codice sorgente Android] (http://www.netmite.com/android/mydroid/development/pdk/docs/intro_source_code.html) – zhibin

risposta

130

Ecco una versione breve di ciò che troverete quando si scarica la sorgente Android. Lascerò fuori alcune directory secondarie e scaverò più in profondità in un paio di quelle importanti. Fondamentalmente quello che otterrete (basato sull'attuale versione di Ice Cream Sandwich), in ordine alfabetico:

  • Bionic - il runtime C per Android. Nota che Android non usa glibc come la maggior parte delle distribuzioni Linux. Invece la c-library si chiama bionic e si basa principalmente su fonti derivate da BSD. In questa cartella troverai il sorgente per la libreria c, la matematica e altre librerie di runtime core.
  • Bootable - codice relativo all'avvio e all'avvio. Alcuni di questi sono legacy, le informazioni sul protocollo fastboot potrebbero essere interessanti poiché sono implementate dai boot loader in un numero di dispositivi come quelli di Nexus.
  • Build: l'implementazione del sistema di compilazione che include tutti i modelli di file di creazione principali. Un file importante qui è lo script envsetup.sh che ti aiuterà molto quando lavori con la piattaforma. L'esecuzione di questo script in una shell abiliterà i comandi per impostare le variabili di ambiente, creare moduli specifici e grep nei file del codice sorgente.
  • Cts - i test di compatibilità. La suite di test per garantire che una build sia conforme alle specifiche Android.
  • Dalvik - il codice sorgente per l'implementazione della Dalvik Virtual Machine
  • Sviluppo - progetti relativi allo sviluppo come il codice sorgente per gli strumenti sdk e ndk. Normalmente non è una cartella che si tocca quando si lavora con la piattaforma per un obiettivo.
  • Dispositivo: codice specifico del prodotto per diversi dispositivi. Questo è il posto dove trovare i moduli hardware per i diversi dispositivi Nexus, creare configurazioni e altro ancora.
  • Esterno: contiene il codice sorgente per tutti i progetti open source esterni come SQLite, Freetype e webkit.
  • Framework: questa cartella è essenziale per Android poiché contiene i sorgenti per il framework. Qui troverai l'implementazione di servizi chiave come System Server con i gestori di pacchetti e attività. Anche la mappatura tra le API delle applicazioni Java e le librerie native viene eseguita qui.
  • Hardware: codice sorgente correlato all'hardware, ad esempio specifica e implementazione del livello di astrazione hardware Android. Questa cartella contiene anche l'implementazione del livello di interfaccia radio di riferimento (per comunicare con il lato modem).
  • libcore - Apache Harmony.
  • libnativehelper - Funzioni di supporto da utilizzare con JNI.
  • (Kernel) - non fa parte del download di origine predefinito ma è possibile ottenere l'accesso a questo codice scaricandolo manualmente o aggiungendo il repository allo strumento Repository. Contiene i sorgenti per la versione Android del kernel Linux.
  • Out - l'output della build verrà posizionato qui dopo aver eseguito make. La struttura della cartella è out/target/product /. Nella build predefinita per l'emulatore, l'output verrà inserito in out/target/product/generic. Qui è dove si trovano le immagini utilizzate dall'emulatore per iniziare (o per essere scaricate e trasmesse su un dispositivo se si sta costruendo per un target hardware).
  • Pacchetti: contiene il codice sorgente per le applicazioni predefinite come contatti, calendario, browser.
  • Prebuilt: contiene file distribuiti in formato binario per comodità. Gli esempi includono le associazioni di compilazioni incrociate per diverse macchine di sviluppo.
  • Sistema: file di codice sorgente per il sistema Android principale. Questo è il sistema Linux minimale che viene avviato prima che la Dalvik VM e tutti i servizi basati su Java siano abilitati. Questo include il codice sorgente per il processo init e lo script init.rc predefinito che fornisce la configurazione dinamica della piattaforma
  • strumenti - Vari strumenti IDE.

Oltre a quanto sopra c'è anche la directory .repo nascosta che contiene l'origine per l'utilità repo. Inoltre, contiene il manifest che specifica quali repository git desideri monitorare per questo progetto di origine Android. Se hai le tue aggiunte, puoi rintracciarle automaticamente aggiungendo un manifest locale qui.

Per le modifiche del framework della piattaforma sono disponibili alcune istruzioni nella cartella device/sample dell'albero del codice sorgente. Questo ti mostrerà come aggiungere API ad Android senza dover modificare il framework principale.

+0

Perché la directory del kernel non fa parte del codice sorgente predefinito? – Vins

+0

Risposta eccellente, vedo anche alcune altre directory: abi, art, buildcache, sviluppatori, documenti, libcore, libnativehelper, ndk, sdk, strumenti, fornitore. Spiega per favore. Proverò a spiegarne qualcuno che ho qualche ipotesi. buildcache: qualcosa per ottimizzare la costruzione? sviluppatori: assomigliano a campioni per sviluppatori. documenti: documenti. ndk: uno strumento per scrivere l'app per Android in parte in C/C++ (https://developer.android.com/tools/sdk/ndk/index.html). fornitore: app predefinite da fornitori come Facebook. Per favore Correggi. – lindenrovio

+0

Inoltre sarà bello se c'è una panoramica delle sottodirectory nei framework. – lindenrovio

Problemi correlati