Il Forum è consultabile solo in modalità lettura. Per domande o consigli iscriviti al nostro GRUPPO FACEBOOK / COMMUNITY cliccando qui

[GUIDA] Compilare i sorgenti di Android 5.1.1 Lollipop

Discussione in 'Development' iniziata da udK, 3 Apr 2013.

  1. udK

    udK Worker Droid

    Iscritto:
    29 Dic 2012
    Messaggi:
    442
    "Mi Piace":
    184
    Compilare i sorgenti di Android 5.1.1 Lollipop

    Nota: Questa guida è per tutti coloro che hanno già una certa familiarità con il sistema Linux, se non lo avete mai utilizzato questa guida probabilmente non fa per voi!

    IMPORTANTE:
    • Questa guida fa riferimento alla compilazione dei sorgenti solo per i dispositivi serie Nexus ovvero quelli supportati ufficialmente dalla piattaforma di sviluppo.
      Se avete un device non Nexus dovete essere in possesso del repository compatibile contenente tutte le impostazioni per la versione di Android in uso in questa guida.

    Requisiti:
    • PC: è consigliato avere almeno un quad core (d'obbligo una CPU a 64bit!) con almeno 16GB di RAM.
    • Preferibilmente Ubuntu Linux ( versione 14.04 64bit oppure una distribuzione derivata Debian, sempre a 64bit.
    • Approssimativamente dai 100 ai 200 GB di spazio libero su disco.

    Pacchetti fondamentali necessari:
    • Python
    • GNU Make
    • OpenJDK
    • Git

    Per installare i pacchetti necessari (Ubuntu 14.04):
    Codice:
    $ sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip
    Installare Repo:
    Per maggiori informazioni su Repo e Git: http://source.android.com/download/using-repo (in lingua inglese)

    1. Assicuratevi di avere la cartella bin nella vostra home directory e verificate anche che essa sia inserita tra i vari $PATH:
      Codice:
        $ cd ~
        $ mkdir bin
        $ echo $PATH
      Per aggiungerla nei $PATH:
      Codice:
      PATH=$PATH:/home/vostro_utente/bin
      export PATH
    2. Scaricate lo script repo e dategli i permessi di esecuzione:
      Codice:
      $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
      $ chmod a+x ~/bin/repo

    Inizializzare il client Repo:
    1. Create una directory vuota nella vostra home:
      Codice:
      $ mkdir mydroid
      $ cd mydroid
    2. Eseguite repo init per poter scaricare le ultime versione di tutti i sorgenti disponibili:
      Codice:
      $ repo init -u https://android.googlesource.com/platform/manifest
      Se volete scaricare un ramo di sviluppo differente da quello "master" specificatelo con l'opzione -b come nell'esempio sotto:
      Codice:
      $ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r1
    3. Quando richiesto, configurate Repo con il vostro nome ed indirizzo email.

    Ad inizializzazione eseguita con successo dovreste ricevere un messaggio simile a questo:
    Scaricare i sorgenti:
    Per scaricare tutti i files nella directory mydroid specificati nel manifest di git eseguite:
    Codice:
    $ repo sync 
    I sorgenti saranno scaricati ed organizzati per progetto.

    Scaricare i binari proprietari:
    Per poter funzionare la ROM necessità dei driver proprietari (purtroppo) closed source che potete trovare a questo indirizzo: https://developers.google.com/android/nexus/drivers
    Andranno estratti e copiati nella cartella vendor.


    Inizializzare il codice:

    Codice:
    $ source build/envsetup.sh

    Selezionare il target:

    Codice:
    $ lunch
    Selezionate il numero corrispondente al vostro dispositivo oppure scrivete manualmente la stringa relativa al numero.
    Nota: Di default la ROM viene compilata in modalità userdebug quindi include il root e strumenti per il debug, se questi non vi servono la potete compilare in modalità user scrivedo manualmente il nome del vostro dispositivo, esempio: full_maguro-user al posto di full_maguro-userdebug

    Compilare il codice:

    Per compilare il codice eseguite make dalla directory mydroid:
    Codice:
    $ cd ~/mydroid
    $ make -j[I][COLOR=#FF0000]X[/COLOR][/I] otapackage
    Al posto di X indicate il numero di core che ha la vostra CPU.
    Se il processo si interrompe per un errore riguardante la mancanza di "run-java-tool" provate ad impostare la variabile ANDROID_JAVA_HOME a $JAVA_HOME prima di eseguire il make.

    Link di riferimento per approfondimenti:
     
    Ultima modifica: 13 Lug 2015
    A Crotan, lucky76, max_power89 e ad altre 5 persone piace questo elemento.
  2. kalix

    kalix Bronze Droid

    Iscritto:
    12 Giu 2013
    Messaggi:
    890
    "Mi Piace":
    319
    Ultima modifica: 1 Nov 2013
  3. simoscorpion

    simoscorpion Power Droid

    Iscritto:
    26 Lug 2012
    Messaggi:
    45.604
    "Mi Piace":
    11.831
    ciao quanto hai tempo puoi aggiungere anche una parte per kitkat ?
     
    A kalix piace questo elemento.
  4. udK

    udK Worker Droid

    Iscritto:
    29 Dic 2012
    Messaggi:
    442
    "Mi Piace":
    184
    Grazie della segnalazione, ho corretto la guida, hanno cambiato il percorso di repo.

    Fatto! ;)
     
    A simoscorpion e kalix piace questo messaggio.
  5. simoscorpion

    simoscorpion Power Droid

    Iscritto:
    26 Lug 2012
    Messaggi:
    45.604
    "Mi Piace":
    11.831
    ottimo grazie, vorrei cimentarmi cosi giusto per provare a vedere se ci riesco a compilare una rom, seguendo questa guida avremo kitkat proprio stock senza neanche il root ?

    perdonami se le mie domande sono stupide o banali ma voglio capirci un po meglio
     
    A Giulio75 piace questo elemento.
  6. kalix

    kalix Bronze Droid

    Iscritto:
    12 Giu 2013
    Messaggi:
    890
    "Mi Piace":
    319
    anche per me è la prima volta, sto scaricando i sorgenti... solo che ci sta mettendo una vita :D
     
    Ultima modifica: 1 Nov 2013
  7. udK

    udK Worker Droid

    Iscritto:
    29 Dic 2012
    Messaggi:
    442
    "Mi Piace":
    184
    Se la ROM viene compilata in modalità userdebug include anche il root se invece compili la user non viene incluso.
    edit: Aggiungo questa differenza nella guida.

    Sono praticamente 9GB di roba :D
     
    A kalix piace questo elemento.
  8. simoscorpion

    simoscorpion Power Droid

    Iscritto:
    26 Lug 2012
    Messaggi:
    45.604
    "Mi Piace":
    11.831

    ovvero come faccio a scegliere la userdebug ?
     
  9. udK

    udK Worker Droid

    Iscritto:
    29 Dic 2012
    Messaggi:
    442
    "Mi Piace":
    184
    Ho aggiunto nella guida la scelta della modalità di compilazione della ROM.
     
    A simoscorpion piace questo elemento.
  10. simoscorpion

    simoscorpion Power Droid

    Iscritto:
    26 Lug 2012
    Messaggi:
    45.604
    "Mi Piace":
    11.831
    un ultima cosa che non ho capito, ma dove viene "scelto" il device su cui costruire la rom, esempio io voglio fare una rom per tf101, dove devo scegliere il mio modello ?
     
  11. udK

    udK Worker Droid

    Iscritto:
    29 Dic 2012
    Messaggi:
    442
    "Mi Piace":
    184
    Non è così semplice purtroppo.
    Di default la piattaforma di sviluppo supporta solo i dispositivi serie Nexus, se vuoi compilare una ROM per un dispositivo differente devi avere i binari proprietari compatibili, tutte le impostazioni più tutte le modifiche per renderlo compatibile con il 4.4 AOSP.

    edit: Ho aggiunto una nota in merito nel primo post.
     
    Ultima modifica: 1 Nov 2013
  12. simoscorpion

    simoscorpion Power Droid

    Iscritto:
    26 Lug 2012
    Messaggi:
    45.604
    "Mi Piace":
    11.831
    dove posso trovare questi binari ? ma intendi l'update binary ? se io prendo quello di una rom e lo copio in quella che andrò a creare puà andare ?
     
  13. kalix

    kalix Bronze Droid

    Iscritto:
    12 Giu 2013
    Messaggi:
    890
    "Mi Piace":
    319
    Mi servirebbero anche a me queste info...ma i sorgenti devo continuare a scaricarli quindi?

    Inviato dal mio GT-I9070 utilizzando Tapatalk
     
  14. udK

    udK Worker Droid

    Iscritto:
    29 Dic 2012
    Messaggi:
    442
    "Mi Piace":
    184
    Non so dirti quali siano i binari proprietari, ogni dispositivo in base all'hardware ha i suoi.

    Cerco di spiegarmi semplice, che non è proprio il mio forte :joy:
    I sorgenti che scarichi sono solo una base, per poter poi compilare la ROM per un dispositivo piuttosto che per un altro servono tutta una serie di ulteriori aggiunte, modifiche, sostituzioni al codice per rendere questa base compatibile col dispositivo che ti interessa, se hai già scaricato i sorgenti vai nella cartella device/asus/grouper e puoi farti un'idea di tutte le ulteriori aggiunte che servono a questa base per poter generare la ROM per il Nexus7 (2012).

    L'update-binary è un'altra cosa, quello serve solo per installare lo zip della ROM.
     
    A kalix piace questo elemento.
  15. Raffaele

    Raffaele Silver Droid

    Iscritto:
    20 Apr 2013
    Messaggi:
    1.691
    "Mi Piace":
    763
    I sorgenti servono sempre.
    I binari li prendi dal produttore del dispositivo.

    Mi hai anticipato.... Qualcosa pronto per il gnexus ??? :alol: udK

    Inviato dal mio Nexus 4 utilizzando Tapatalk
     
    Ultima modifica: 1 Nov 2013
    A kalix piace questo elemento.
  16. simoscorpion

    simoscorpion Power Droid

    Iscritto:
    26 Lug 2012
    Messaggi:
    45.604
    "Mi Piace":
    11.831
    ho un problemino con i pacchetti

    [​IMG]
     
  17. kalix

    kalix Bronze Droid

    Iscritto:
    12 Giu 2013
    Messaggi:
    890
    "Mi Piace":
    319
    In pratica dovrò andare a fare delle modifiche manuali ai sorgenti per adattarli al mio dispositivo? I binari per il mio device dove li posso trovare?

    Inviato dal mio GT-I9070 utilizzando Tapatalk
     
    A simoscorpion piace questo elemento.
  18. udK

    udK Worker Droid

    Iscritto:
    29 Dic 2012
    Messaggi:
    442
    "Mi Piace":
    184
    Sto compilando il 4.4 per il Nexus7 (2012) ma coi vecchi binari visto che ancora google non li ha pubblicati, sperando che booti la ROM, per il GN ancora 0.

    Prova con
    Codice:
    sudo apt-get -f install
     
  19. simoscorpion

    simoscorpion Power Droid

    Iscritto:
    26 Lug 2012
    Messaggi:
    45.604
    "Mi Piace":
    11.831
    mi esce questo

    [​IMG]
     
  20. udK

    udK Worker Droid

    Iscritto:
    29 Dic 2012
    Messaggi:
    442
    "Mi Piace":
    184
    Non lo so, posso dare una mano sui dispositivi Nexus per tutti gli altri non ho idea.
    Se CyanogenMod supporta il vostro dispositivo si potrebbe partire dal loro repository ma richiederebbe cmq delle modifiche perché il codice CM contiene modifiche rispetto a quello AOSP, oppure su XDA.