CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 31 Thanks ricevuti nell'ultimo mese

Pagina 1 di 9 123 ... ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 87
Discussione:

[GUIDA] Modificare una Rom

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    [GUIDA] Modificare una Rom


    PREMESSA
    - Patti chiari, amicizia lunga -



    . . . THREAD IN CONTINUO AGGIORNAMENTO!! . . .


    Questo Thread nasce dalla collaborazione tra Crotan e Miseusegau, due utenti molto attivi nella sezione Modding Galaxy Nexus. In questa discussione verranno trattate operazioni avanzate di Modding, pertanto se non siete utenti esperti, proseguite con la lettura solo a scopo illustrativo. Ci tengo a precisare che voi siete i responsabili di ciò che fate, seguite il thread a vostro rischio e pericolo, nessuno si assume la responsabilità di eventuali danni arrecati al vostro terminale. Seguendo la discussione impareremo ad apportare modificare alle Rom, partirendo con cose semplici per arrivare man mano ad operazioni più complesse e delicate, come la compilazione di un Kernel. Il materiale che troverete è stato preso da ogni dove: XDA, Androidiani, siti Android, ed altri Forum, a tutto ciò ho aggiunto le mie conoscenze nel settore. Il nostro intento è quello di riuscire a rendere questa discussione il punto di riferimento per le operazioni di Modding avanzate, in quanto in Internet è possibile reperire molte informazioni, ma in modo frammentario e caotico. Ognuno di voi può contribuire alla crescita di questo topic, traducendo e / o scrivendo guide, previa aver testato il tutto. SI POSTA SOLO MATERIALE TESTATO E FUNZIONANTE. Dopo questa piccola, ma doverosa premessa è giunto il momento di cominciare. Buona lettura!



    . . . PRIMI PASSI . . .
    - La struttura della Rom -


    La prima cosa da fare è scompattare il File Zip della Rom che vogliamo modificare e per fare questo dobbiamo servirci di Software quali Winrar, WinZip o similari. Personalmente, utilizzo Winrar e non mi ha mai dato problemi. Una volta che abbiamo scompattato la Rom ci troveremo dinanzi a tre elementi:



    1) Meta – Inf : Questa cartella contiene dei File che a loro volta contengono delle istruzioni che dicono alla Recovery cosa fare con il pacchetto .Zip. Al seguente percorso \META-INF\com\google\android\ troviamo lo Script chiamato “ Updater – Script “esso costituisce il primo elemento che viene eseguito al momento del Flash. Prenderemo in esame questo Script più avanti
    2)System: Questa è la cartella “ principale “ , contiene l’intero Sistema Operativo Android ad eccezione del Kernel e la RamDisk
    3) Boot.img: Questo File contiene il Kernel e la RamDisk

    Adesso, analizzeremo assieme la composizione delle varie cartelle, iniziamo con la prima: Meta - Inf.

    La suddetta cartella come detto in precedenza dice alla Recovery cosa fare con il pacchetto Zip, il file Updater Script contiene tutte le operazioni che il terminale deve eseguire durante il flash, ATTENZIONE A CIO’ CHE MODIFICATE, in quanto se cancelliamo o modifichiamo in modo errato questo File il pacchetto Zip non si installa, e nella peggiore delle ipotesi il Flash si interrompe nella riga dovè situato l’errore, con rischio di Brick. E’ bene sapere che ogni istruzione presente in questo File deve finire con il punto e virgola ( Se avete un minimo di conoscenze nel mondo della programmazione basta poco per capire il motivo ) . Vediamo comè strutturata la sintassi dell’Updater – Script:

    Istruzione ui_print:

    Sintassi: ui_print ( " Testo da visualizzare durante il Flash " );

    Istruzione Mount:

    Sintassi: (fs_type, partition_type, location, mount_point)
    Dettagli parametri: fs_type = "yaffs2" | "ext4"
    partition_type="MTD" | "EMMC"
    location = partition | device
    mount_point = cartella di destinazione per montare il File System

    Istruzione Unmount:

    Sintassi: unmount(mount_point)
    Dettagli parametri: mount_point = punto di smontaggio
    Azione: Smonta il File System
    Restituisce: Il punto di montaggio che è stato smontato, in caso di successo, altrimenti restituisce un valore Null

    Istruzione Format:


    Sintassi: format(fs_type, partition_type, location)
    Dettagli parametri: fs_type = string,"yaffs2" | "ext4"
    partition_type= string, "MTD" | "EMMC"
    location = string, partition | device
    Azione: Formatta il File System come specificato

    Istruzione show_progress:

    Sintassi: show_progress(frac, sec)
    Dettagli parametri: frac = frazione del completamento del progresso
    sec = totale secondi
    Azione: Visualizza il progresso del Flash

    Istruzione set_progress:


    Sintassi: set_prograss(frac)
    Dettagli parametri: frac= frazione del progresso

    Istruzione package_extract_file:

    Sintassi: package_extract_file(package_path) o package_extract_file(package_path, destination_path)
    Dettagli parametro: package_path = Il file nel pacchetto che si desidera estrarre
    destination_path = cartella di destinazione per estrarre i file
    Azione: Estrae un singolo File dal pacchetto per la destinazione specificata

    Istruzione file_getprop:

    Sintassi: file_getprop(file, key)
    Dettagli parametri: file = stringa , nome del File da controllare
    key = stringa
    Azione: Verifica la presenza di un valore nel File

    Istruzione symlink:

    Sintassi: symlink(target, src1, src2, ..., srcN)
    Dettagli parametri: target = stringa, destinazione del Symlink
    srcX = the symbolic link to create that points to the target
    Azione: scollega tutti i symlink esistenti, prima di crearne di nuovi

    Istruzione set_perm:

    Sintassi: set_perm(uid, gid, mode, file1, file2, ..., fileN)
    Dettagli parametri: uid = user id
    gid = gruppo id
    mode = permessi
    fileX = File da settare
    Azione: Consente di impostare permessi ad un File o ad un gruppo specifico di File, a patto che almeno uno sia specificato. I primi quattro parametri sono necessari

    Istruzione set_perm_recursive:

    Sintassi: set_perm_recursive(uid, gid, dirmode, filemode, dir1, dir2, ...dirN)
    Dettagli parametri: uid = user id
    gid = gruppo id
    dirmode = Permesso di
    filemode = permission to set to files contained within the specified directory
    dirX = directory per impostare l'autorizzazione
    Azione: Imposta le autorizzazioni di una Directory o un insieme di Directory, e tutti i File e cartelle al loro interno, a patto che almeno una cartella sia specificata. I primi cinque parametri sono obbligatori

    Istruzione getprop:

    Sintassi: getprop(key)
    Dettagli parametri: key = stringa, la proprietà che si desidera che il sistema ritorni
    Azione: Questa funzione restituisce il valore della proprietà specificata. Questo è usato per richiedere informazioni sulla piattaforma dal file build.prop

    Istruzione assert:

    Sintassi: assert(condition)
    Dettagli parametri: condizione - boolean
    Descrizione: Se la condizione è falsa, interrompe l'esecuzione dello script, altrimenti continua l'esecuzione

    Per ulteriori informazioni vi invito a consultare l'ottima guida del mio amico Mario cliccando qui.

    Passiamo ora ad analizzare la cartella System, e le relative Sotto Directory:




    Addon.d:

    App: In questa cartella ci sono tutte le Applicazioni di Sistema, possiamo toglierne alcune per allegerire la Rom oppure possiamo aggiungerne.
    NB: E’ obbligatorio mettere un Launcher , se non lo facciamo, è Bootloop

    E’ bene sapere, che non tutte le Applicazioni presenti in questa cartella possono essere rimosse, in quanto potrebbero verificarsi Bootloop o FC, pertanto qui di seguito allego l’elenco di Applicazioni che NON vanno cancellate:
    Spoiler:


    Bin: Questa cartella contiene i file Binari della Rom, non modificate nulla in quanto potreste avere problemi

    Etc: Contiene settaggi e cose Extra. In essa è presente una sotto cartella chiamata Init.d lì vanno messi gli Script che vogliamo far eseguire all'avvio del terminale. Sempre in questa cartella troviamo il File Gps.conf, possiamo modificarlo per far agganciare più rapidamente i satelliti. Usate -> Questo

    Fonts: Qui ci sono tutti I Fonts della nostra Rom

    Framework: Qui sono presenti molti file .Jar ed un File APK: Framework – res.apk, esso è molto importante, senza di lui la Rom non parte. Il Framework è il cuore del sistema operativo che racchiude tutte le funzioni (aggiunte spesso dai vari produttori) e gran parte del tema della rom

    Lib: Qui ci sono tutte le librerie per le Applicazioni di sistema, che servono per farle funzionare.

    Media: Qui troviamo vari File e cartelle, tra cui la Boot Animation, ovvero l’animazione che troviamo quando accendiamo il telefono. Più in là vedremo come funziona*. Oltre a ciò, troviamo la cartella Audio che contiene suoni di notifiche, dell’UI etc. E’ possibile rimuoverli e / o aggiungerne di nuovi.

    Tts:
    Qui ci sono le librerie per la ricerca vocale PicoTts che in Italia non funziona

    Usr: I File presenti in questa cartella si occupano principalmente di tener conto delle Impostazioni utente ( Luminosità etc. )

    Vendor:
    Qui ci sono dei File necesssari per il funzionamento del Play Store

    Xbin: : Contiene dei Fille di Sistema da NON modificare ( Sono compresi i file per far funzionare il root es: Su e Busybox)

    Build.prop: Questo è un File molto importante, esso contiene tutte le informazioni della Rom e le sue principali caratteristiche. Possiamo aggiungere vari Tweaks e modificare alcune stringhe per personalizzare la nostra Rom. Più avanti vedremo come fare**[/QUOTE]
    Ultima modifica di Crotan; 19-06-14 alle 13:40

  2. I seguenti 24 Utenti hanno ringraziato Crotan per il post:

    androidavidroid (08-05-14),B-Rabbit (07-08-13),bilel96 (15-08-13),Brrmatteo (02-08-13),Cnoxs (03-08-13),CrazyDunky (01-08-13),dadenet (30-08-13),fedelamb (01-08-13),gpegasus77 (09-06-14),grifis78 (20-08-13),Kylua (26-01-14),leonardodettoileo (26-08-13),lorenz05 (30-12-13),milano69 (27-11-13),miseusegau (05-09-13),morfances (05-02-14),mrpalmeras (05-06-14),Nikola9698 (11-09-13),NiloGlock (10-09-14),SamueleCiprietti (01-08-13),S_mario (16-06-14),tommaso84 (02-08-13),veonazzo (13-05-14)

  3.  
  4. #2
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    * Abbiamo assodato che la Boot Animation è l'animazione iniziale nel momento in cui accendiamo il telefono, è situato in System/Media ed è il File Bootanimation.zip. Ma cosa contiene quel File Zip? Nella maggior parte dei casi, esso contiene tre file, più precisamente due cartelle ed un File .txt. Googlando ho trovato questa immagine che spiega in modo abbastanza esaustivo il funzionamento della Boot Animation:


    Commentiamo insieme l'immagine, la cartella chiamata part0 contiene le immagini che si svolegeranno una sola volta, in sequenza, a 30 fps. Una volta che le immagini nella cartella part0 sono finite, arrivano quelle della part1, ovvero la parte che si ripete sino all'avvio del terminale.

    Dunque, per creare una Boot Animation personalizzata, abbiamo bisogno inanzitutto di un Software grafico come Gimp o Photoshop, successivamente dobbiamo creare una cartella, dove al suo interno metteremo altre due cartelle, ovvero, part0 e part1, dove a sua volta inseriremo le immagini create in precedenza ( che debbono avere la stessa risoluzione dello Smartphone, nel nostro caso 1280*720 )ed un file testuale che chiameremo desc.txt. Questo File contiene le informazioni su come le immagini verranno visualizzate durante la Boot Animation, non mi dilungo ulteriormente nella spiegazione del funzionamento di questo File in quanto l'immagine sopra spiega tutto in modo molto esaustivo. Una volta fatto tutto ciò, zippiamo il tutto, et voilà, abbiamo la nostra Boot Animation personalizzata, semplice no?


    ** Il Build.prop situato in /System è un File di Sistema molto importante, esso contiene tutte le Informazioni sulla Rom, ed è possibile aggiungere Tweaks per migliorare vari aspetti del dispositivo. Per apportare modifiche a questo File bisogna aprirlo tramite un Editor, consiglio Notepad++. Se non siete sicuri di ciò che state modificando, non proseguite oltre, in quanto modifiche errate possono portare a malfunziomaneti e / o Bootloop. I Tweaks potete inserirli in qualsiasi punto, io per comodità preferisco metterli alla fine, ma non è legge e potete metterli dove più preferite.Modificando il Build.prop possiamo migliorare la velocità del dispositivo, la velocità d'avvio, velocità delle connessioni ( Upload / Downlad / Navigazione Internet ), risparmiare la batteria e molti altri, a seconda dei Tweaks che andrete ad inserire. Di seguito troverete una lista di alcuni Tweaks:

    ro.build.version.release= 4.2.2


    Qui possiamo modificare la versione di Android

    ro.build.display.id=Cyano

    Qui possiamo modificare la Build

    ro.product.locale.language=IT
    ro.product.locale.region=it


    Queste due stringhe impostano la lingua Italiana al primo Boot

    ro.product.model=Galaxy Nexus


    Qui possiamo cambiare il nome del terminale

    ro.com.google.networklocation=


    Impostando 0 disabilitiamo la localizzazione tramite rete Wifi o Dat mobili, impostando invece 1 li attiviamo

    debug.sf.hw = 1

    Render UI con la GPU ( Riduce il carico sulla CPU )

    dalvik.vm.heapsize = 32m

    Imposta le dimensioni della Dalvik VM, a seconda di quanta memoria Ram è disponibile, può essere aumentato

    persist.adb.notify = 0

    Nasconde l'icona del Debug Usb nella Status Bar

    windowsmgr.max_events_per_sec = 120

    Aumenta la velocità di scorrimento

    persist.sys.use_dithering = 0

    Migliora la qualità dell'immagine

    debug.sf.nobootanimation = 1

    Disabilita la Boot Animation

    ro.HOME_APP_ADJ = 1

    Mantiene il Launcher in memoria

    ro.sf.lcd_density = 240

    Imposta la densità dello schermo, modificatelo in base alle vostre esigenze e gusti

    mot.proximity.delay = 150

    pm.sleep_mode = 1

    Risparmio energetico

    Screen/scrolling/gpu/video/photo tweaks


    windowsmgr.max_events_per_sec= ( consigliato 275)

    debug.performance.tuning=1
    video.accelerate.hw=1

    #Migliora lo Scrolling

    ro.max.fling_velocity=12000
    ro.min.fling_velocity=8000

    #Migliora la qualità dello schermo, penalizzando però le prestazioni ( 1 attivato, 0 disattivato )

    persist.sys.use.dithering=1

    #Migliore qualità foto/video
    ro.media.enc.jpeg.quality=100
    ro.media.dec.jpeg.memcap=8000000
    ro.media.enc.hprof.vid.bps=8000000
    ro.media.enc.hprof.vid.fps=65

    Performance/battery tweaks

    #Sleep Mode per risparmiare batteria
    . 0 power collapse suspend, 1 power collapse (best), 2 apps go to sleep, 3 show clock and wait, 4 wait for interrupt
    pm.sleep_mode=

    #Battery Savers
    ro.ril.disable.power.collapse=0

    #Disabilita l'invio dei dati di utilizzo a Google
    ro.config.nocheckin=1

    Vari Tweaks

    #Disabilitare suoni fotocamera
    persist.sys.camera-sound=0

    #Ritardo suoneria. Stabilisce dopo quanto tempo il telefono inizia a squillare quando arriva una chiamata. Impostalo tra 0 e 3.000
    ro.telephony.call_ring.delay=

    Dalvik VM Tweaks

    #Dimensioni memoria della Dalvik VM
    dalvik.vm.heapsize= (stock 256m, consigliato 320m)
    dalvik.vm.heapstartsize= (stock 16m)
    dalvik.vm.heapgrowthlimit= (stock 128m)

    #Disabilita il controllo esteso Dalvik JNI
    ro.kernel.android.checkjni=0
    ro.kernel.checkjni=0
    dalvik.vm.checkjni=0

    TWEAKS SPERIMENTALI, USARLI A PROPRIO RISCHIO E PERICOLO!

    #GPU/Video/Scrolling/Media tweaks

    persist.sys.ui.hw=1
    ro.config.disable.hw_accel=false
    debug.composition.type=gpu
    ro.min_pointer_dur=8
    debug.egl.profiler=1
    debug.egl.hw=1
    ro.media.dec.vid.wmv.enabled=1
    ro.media.dec.aud.wma.enabled=1
    ro.media.dec.aud.flac.enabled=1
    ro.media.dec.vid.avi.enabled=1
    #Remove FPS cap. May be unstable - better have it activated
    debug.gr.swapinterval=0

    #Disabilita debugging/error reporting/logging

    logcat.live=disable
    profiler.force_disable_err_rpt=1
    profiler.force_disable_ulog=1

    #signal/data tweaks
    persist.cust.tel.eons=1
    ro.ril.enable.amr.wideband=1
    ro.config.hw_fast_dormancy=1
    persist.telephony.support.ipv6=1
    persist.telephony.support.ipv4=1

    #Battery tweaks
    persist.sys.shutdown.mode=hibernate

    #Vari tweaks
    debug.enabletr=true
    persist.android.strictmode=0
    dalvik.vm.jmiopts=forcecopy

    #Boot rapido
    ro.config.hw_quickpoweron=true

    #Migliori foto e video
    ro.media.capture.maxres=8m
    ro.media.panorama.defres=3264x1840
    ro.media.panorama.frameres=1280x720
    ro.camcorder.videoModes=true

  5. I seguenti 13 Utenti hanno ringraziato Crotan per il post:

    B-Rabbit (07-08-13),Brrmatteo (03-08-13),CEMT96 (07-08-13),Cnoxs (03-08-13),dadenet (30-08-13),fedelamb (01-08-13),Giox96 (23-12-13),grifis78 (20-08-13),leonardodettoileo (22-09-13),morfances (05-02-14),NiloGlock (10-09-14),veonazzo (13-05-14)

  6. #3
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    Modifiche intermedie

    Com'è composto un Apk
    - Un introduzione necessaria... -

    Prima di scroprire com'è composto un File Apk è doveroso conoscere, o quanto meno avere le basi tecniche di com'è strutturato Android. Quanto segue è frutto delle mie conoscenze nel settore. Cominciamo...


    Come possiamo vedere dall'immagine sopra, alla base di Android c'è il Kernel Linux, in esso sono contenuti i Driver ( Wifi, Bluetooth, audio, video etc. ) che servono per controllare l'Hardware del telefono. Sopra il Kernel poggiano le librerie come SQLite, Webkit, SSL e via dicendo...Nel riquadro " Android Runtime " troviamo due elementi: Core Libraries e Dalvik Virtual Machine. Il primo è una libreria, il secondo è una JVM, ovvero Java Virtual Machine, insieme costituiscono la piattaforma di sviluppo per le Applicazioni, prenderemo in esame la Dalvik tra poco. A seguire troviamo i gestori e le Applicazioni basilari del sistema, come il gestore delle App installate, il File System etc. Infine, nell'ultimo strato troviamo le App destinate all'utente

    Torniamo alla Dalvik Virtual Machine, come ho precedentemente detto essa è " quasi " una Java Virtual Machine. Perchè dico quasi? Il motivo è molto semplice, una JVM eseguo il Bytecodes, la Dalvik invece esegue un altro linguaggio chiamato DEX, che sta per Dalvik EXecutable, esso è studiato per rendere al meglio su dispositivi mobili, come gli Smartphone.

  7. I seguenti 14 Utenti hanno ringraziato Crotan per il post:

    Albertop97 (09-08-13),B-Rabbit (07-08-13),Brrmatteo (03-08-13),Cnoxs (03-08-13),fedelamb (01-08-13),grifis78 (20-08-13),Kylua (26-01-14),leonardodettoileo (26-08-13),morris2003 (30-04-14),N1m0Y (01-08-13),Tex99 (24-08-13),tommaso84 (02-08-13),veonazzo (13-05-14)

  8. #4
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    Compilazione dai sorgenti, tutto quello che c'è da sapere
    - Sources? All another story -


    Introduzione alla Compilazione dai Sorgenti By Anto999


    Ecco alcune parti fondamentali dei sorgenti(o source):
    framework_base: è il framework che verrà poi compilato,questa è la parte in java del framework.
    Framework_av: è la parte del framework scritta in c e c++
    android_packages_apps_Phone(può essere anche altro,tipo CMFilemanager): queste sono le applicazioni contenenti della rom,possono essere compilate tramite la compilazione intera,tramite eclipse o 'mm' command
    android_kernel_samsung_tuna:cosa sono questi file??bene...sono i sorgenti del kernel...questi devono essere compilati a parte.
    android_device_samsung_tuna: questi sono i device config da inserire nei sorgenti prima della compilazione,e contengono un kernel pre-compilato dal proprietaro dei device-config,se vogliamo sostituirlo con uno nostro,bisogna mettere il zImage nella cartella prebuilt ed i suoi moduli...

    Altra cosa dei sorgenti e della compilazione è il Toolchain:
    Il toolchain è un insieme di tool usato nella compilazione della rom,ci sono vari tipi di toolchain,ma quello che interessa a noi è quello per arm,ce ne sono vari,ecco un elenco:
    1)Arm-eabi 4.4.3 by Teamdouche( cyanogenmod )
    2)Arm-eabi 4.7 13.03 by Linaro(uno dei migliori per android,ottimizzato per arm e per il nostro caro caro Galaxy Nexus)
    3)Suorcery G++,disponibile in modalità lite e a pagamento(non lo consiglio,ho avuto molti errori nella compilazione,ed ha dei bug[un grazie a CastagnaIT per il chiarimento])
    4)Sourcery CodeBench Lite 2011.09-69 for ARM EABI(stessa considerazione di quello di sopra)
    5)NDK by Google Developers(il secondo per eccellenza a mio parere,questo lo troviamo nei sorgenti aosp)

    Dopo aver detto cosa è un Toolchain,ecco alcune flag,che ottimizzano una rom e le sue app:
    -O3:
    LOCAL_CFLAGS += -O3 nell'android.mk
    -O2:
    LOCAL_CFLAGS += -O2 nell'android.mk
    vfp:
    LOCAL_CFLAGS += -mfpu=vfp
    app_fast:
    APP_CFLAGS += -Ofast nell'application.mk
    altre coming soon...


    Tutto su Github

    - Guida originaria di Anto999, rivisitata ed ampliata da Crotan. Grazie a XDA -

    Github da come sappiamo tutti( o la maggior parte...) è il servizio di cloud per eccellenza dei suorce code android,tantomeno anche i google developer hanno account lì ed è anche grazie a loro che il kernel(AK e come altri,viene updatato di versione..)

    La sua funzione è quella di tenere i suorce code di molti developers,per tenere conto alle regole GPL(Google is your friend..),che ci sono sul kernel android,quindi una rom che ha un proprio kernel e non ha condiviso i suorce,sarà chiuso....

    Creare un Account:


    Download delle librerie richieste:



    Creare l'Account:



    Crea la tua univoca chiave SSH:



    Ora è necessario immettere una passphrase:



    Il terminale dovrebbe restituire qualcosa di simile:



    Andare nella cartella ~/.ssh e copiare il contenuto di id_rsa.pub nell'account di amministrazione di github.com e verificare se tutto funziona.





    Dare Yes



    Ora siamo pronti per fare delle cose serie

    Fork di una Repo


    Ad esempio io uso -> Questa ( https://github.com/CyanogenMod/andro..._apps_Settings )
    Aprite il Link nel Browser e cliccate su Fork
    Clonate il sorgente nel vostro Fork



    -b gingerbread ci lascia scegliere quale Branch abbiamo intenzione di scaricare

    Adesso possiamo fare alcune modifiche come ad esempio aggiungere Files, rimuovere temi etc.

    OPZIONALE: Ho creato un nuovo Branch al mio progetto e l'ho chiamato " XDA " . Per far questo andate nella cartella clonata, e digitare:



    Ora è il momento di vedere cosa sta succedendo:



    Spoiler:


    Come potete vedere ho tolto dei Files e ne ho aggiunto uno.

    PUSHING DELLE MODIFICHE

    Aggiungere tutti i Files modificati:



    Aggiungere tutti i Files rimossi:



    Dopo il git status dovremmo ricevere qualcosa del genere:

    Spoiler:


    Adesso è il momento del commit



    Ed infine per il Push



    Se si ottiene un errore, usate il seguente:



    Ho usato il nome del mio Github e il nome del Branch alla fine

    Rimuovere un Branch

    . . . TO BE CONTINUED . . .

    . . . WORK IN PROGRESS . . .

    . . . COMING SOON . . .


    Unire i Commits

    Immaginiamo la situazione in cui vogliamo aggiungere un Commit creato da qualcun'altro. Abbiamo dunque bisogno di aggiungere i Sources:



    Download del Branch:





    Otterrete un messaggio per risolvere i conflitti. In breve dovete aprire il File e eliminare:

    <<<<<<<<
    =======
    >>>>>>>>

    Non dimenticate di testarlo prima del Pushing

    Procedura Standard:



    Cherry - Pick, i singoli Commit

    Ora è giunto il momento di aggiungere specifici Commit alla Build. Io ho utilizzo -> Questo



    Ora il Commit dovrebbe essere aggiunto. Tutto ciò che dobbiamo fare ora è Pushare

    Modifica del Branch

    Durante l'utilizzo di Git si può notare che a volte dopo la Fresh Sync non c'è un Branch selezionato. Immaginiamo la situazione in cui si è nel Branch A e si desidera controllare il Branch B, perchè usa un metodo diverso. La soluzione è abbastanza semplice



    Questo comando consente di modificare il Branch senza clonare di nuovo tutta la Repo

    Pull Request

    Se si ritiene di aver Fixato un problema e si vuole aiutare lo sviluppatore possiamo fare un Pull Request. Il Pull Request aggiunge le modifiche apportare, nelle altre Repo. Come fare?

    Per prima cosa dobbiamo:

    - Fork( are ) e clonare l Repo di destinazione
    - Fare le modifiche e caricarlo sul vostro Git

    Una volta fatto ciò, andiamo nella nostra Repo e clicchiamo su " Pull Request "

    Spoiler:


    Quindi scegliere l'Account ed il Branch

    Spoiler:


    A volte qualcuno vuole aggiungere qualcosa al tuo codice, in tal caso, riceverai una notifica via Email, inoltre vedrete anche la notifica sul sito Github. Andare lì e fare click su Open

    Spoiler:


    Quando le modifiche non possono essere inglobate, vedrete questo messaggio:

    Spoiler:
    Ultima modifica di Crotan; 24-08-13 alle 11:32

  9. I seguenti 13 Utenti hanno ringraziato Crotan per il post:

    Albertop97 (09-08-13),B-Rabbit (07-08-13),Brrmatteo (02-08-13),dadenet (30-08-13),fedelamb (01-08-13),grifis78 (20-08-13),Kylua (26-01-14),leonardodettoileo (26-08-13),NiloGlock (23-09-14),tommaso84 (02-08-13),veonazzo (13-05-14)

  10. #5
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    COMPILAZIONE KERNEL DA SORGENTI AOSP(GOOGLE):
    - By Anto999 & Crotan -


    COSA SERVE:

    -Ubuntu OS(per i kernel il migliore è 12.04 LTS)
    -Un pc con almeno 2GB di RAM
    -Almeno 20 GB di harddisk libero

    -Scaricamento Jdk:
    codice:
    sudo apt-get install openjdk-6-jdk
    -Scaricare le librerie compilazione:
    codice:
    $ sudo apt-get update
    $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 git
    $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
    -Sarebbe necessario un riavvio adesso per far funzionare al meglio l'ambiente....
    -Creazione cartelle/scaricamento sorgenti google dove posizionare il tutto:

    codice:
    -Aprite il terminale
    -mkdir android
    - mkdir toolchains
    - cd toolchains
    - mkdir linaro
    - cd ..
    - cd ..
    - cd android
    - git clone https://android.googlesource.com/kernel/omap.git -b android-omap-tuna-3.0-jb-mr1.1 maguro
    -Scaricamento toolchain

    codice:
    -Scaricate questo:
    https://releases.linaro.org/13.03/components/android/toolchain/4.7/android-toolchain-eabi-linaro-4.7-2013.03-2-2013-03-17_20-47-57-linux-x86.tar.bz2
    -aprite il file ed estraete tutti i file nella cartella linaro creata prima
    -entrate nella cartella android/maguro ed aprite il makefile,trovate la stringa CROSS_COMPILE=
    Nel mio caso è:
    CROSS_COMPILE= /home/antonio/android/toolchains/linaro/bin/arm-eabi-
    se avete seguito me vi basterà cambiare antonio nel nome del vostro pc dato ad ubuntu
    Adesso è d'obbligo prima della compilazione riavviare il PC...

    All'accensione...

    -Se volete fare alcune modifiche al kernel cercate su github,poi proseguite con il prossimo step...
    Compilazione:
    codice:
    $ cd android
    $ cd maguro
    $ export ARCH=arm
    $ export SUBARCH=arm
    $ export CROSS_COMPILE= /home/antonio/android/toolchains/linaro/bin/arm-eabi-
    $ make tuna_defconfig
    $ make -j#(numero core del vostro PC+1)
    Per ripacchettare il kernel usate questa guida:
    -Scaricate questo zip: Kernel tools.zip
    -prendete la cartella Androkernel e la copiate nella cartella /out del kernel
    -prendete il file buildbootimg.sh e copiatelo nella directory principale del kernel
    -prendete la cartella mkboot e la estraete nello stesso posto del file buildbootimg.sh
    - dopo la compilazione eseguite il file buildbootimg.sh e troverete alla fine il kernel gia zippato in Out/Androkernel/androkernel.zip

    Per l'overclock:
    /samsung/arch/arm/mach-s5pv210/cpu-freq.c

    Per cambiare il nome del kernel,basta andare in:
    /android/maguro/arch/arm/configs/tuna_defconfig
    all'interno del file cercate:
    CONFIG_LOCALVERSION='e qui lo modificate a vostro piacere'

    "ovviamente non esagerate con le parole"

    Per aggiungere governor:
    A. Aprite "drivers/cpufreq/Kconfig"
    B.Aggiungere le seguenti righe nel punto appropriato, tra gli altri governor
    codice:
    config CPU_FREQ_DEFAULT_GOV_SMARTASS            bool "smartass"
                select CPU_FREQ_GOV_SMARTASS
                select CPU_FREQ_GOV_PERFORMANCE
                help
                  Use the CPUFreq governor 'smartass' as default.
    codice:
    config CPU_FREQ_GOV_SMARTASS
               tristate "'smartass' cpufreq governor"
               depends on CPU_FREQ
               help
                 smartass' - a "smart" optimized governor!
                 If in doubt, say N.
    C.Aprite "drivers/cpufreq/Makefile"
    D.Aggiungere la seguente riga nel punto appropriato.
    codice:
    obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS)     += cpufreq_smartass.o
    E. creare un file chiamato "drivers / cpufreq / cpufreq_smartass.c"
    F. Inserire il codice seguente del file.
    [C] Smartass Kernel Govenor - Pastebin.com
    G. Aprite "include / linux / cpufreq.h"
    H. Nella sezione "Default Cpufreq" aggiungete
    codice:
    #elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS)extern struct cpufreq_governor cpufreq_gov_smartass;
    #define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_smartass)
    adesso il governor è aggiunto...

    potete trovare altri governor nel mio github:
    https://github.com/antonio8297/Governor-suorce

    oppure in quello di qualche altro kernel developer.

    Aggiungere gli Scheduler

    Gli Scheduler sono situati in kernel_source/block. Seguire le seguenti istruzioni per implementarli nel nostro Kernel:
    1) Prendere lo Scheduler ed incollarlo in /block
    2) Aprire il file Kconfig.iosched e aggiungere la scelta del Kconfig. Esempio per lo Scheduler SIO:

    codice:
     
    config IOSCHED_SIO
    tristate "Simple I/O scheduler"
    default y
    ---help---
    The Simple I/O scheduler is an extremely simple scheduler,
    based on noop and deadline, that relies on deadlines to
    ensure fairness. The algorithm does not do any sorting but
    basic merging, trying to keep a minimum overhead. It is aimed
    mainly for aleatory access devices (eg: flash devices).
    3) Impostare la scelta di Default:

    codice:
     default "sio" if DEFAULT_SIO
    4) Salvate il file e spostatevi al Makefile, situato sempre in /block. Qui basterà semplicemente aggiungere questa riga di codice ( per il SIO ):
    codice:
    obj-$(CONFIG_IOSCHED_SIO)    += sio-iosched.o
    Salvare nuovamente. FINISH. Sceduler aggiunto

    Costruire un modulo

    Esistono due metodiche:
    A. Digitare make modules
    B. Digitare make path/to/your/module.ko

    Parte D. (Usateli solo per la costruzione di moduli del kernel.)
    A. Questo ricostruisce tutti i moduli
    B. Ricostruirà solo il modulo richiesto. Molto utile quando si ha bisogno di ricostruire un modulo WiFi.

  11. I seguenti 19 Utenti hanno ringraziato Crotan per il post:

    Albertop97 (09-08-13),Brrmatteo (03-08-13),dadenet (30-08-13),fedelamb (01-08-13),grifis78 (20-08-13),Kylua (26-01-14),leonardodettoileo (24-09-13),Mattx94 (30-08-13),miseusegau (01-08-13),morfes (06-08-13),N1m0Y (01-08-13),NiloGlock (23-09-14),Pilone92 (06-11-13),SamueleCiprietti (01-08-13),satchmo (02-08-13),Tex99 (24-08-13),tommaso84 (02-08-13)

  12. #6
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    Kernel: tutto quello che avresti sempre voluto sapere

    Il Kernel è un Software che costituisce il nucleo del sistema operativo, nel nostro caso Android. Esso si occupa della gestione delle memoria primaria e di gestire i processi fornendogli un accesso all'Hardware del terminale. Tali processi vengono messi in lista tramite lo Scheduler, un algoritmo avente appunto il compito di ordinare le richieste in base a determinati parametri (Esempio: Chi arriva prima, chi è meno esoso etc.). Il modo di gestire questi parametri è dato dalla cosidetta politica di scheduling. L'accesso all'Hardware di ciascun programma e dunque di un processo è dato dal Multitasking, questo algoritmo permette di eseguire più processi contemporaneamente, consente inoltre di passare/Switchare da un processo all'altro tramite un particolare stato chiamato commutazione di contesto noto anche come context switch, senza dilungarmi troppo mi limito a dire che questo stadio nel momento in cui arriva la richiesta di switch salva lo stato della computazione corrente nel PCB del processo, in modo che possa essere ripresa in seguito, infine in base alla politica dello Scheduler viene scelto un altro processo dalla "lista". Tuttavia il modulo che effettivamente passa il controllo dei processi alla cpu è il Dispatcher che viene attivato ad ogni Context Switch. Il tempo richiesto da questo modulo per fermare un processo e avviare l'esecuzione di un altro è noto come latenza di dispatch. In altre parole la latenza di Displatch è l'intervallo che intercorre tra il momento d'arrivo dell'Input e il momento in cui viene fornito il relativo Output. Siccome l'accesso all'Hardware è molto complesso viene utilizzato l'HAL noto anche come Hardware Abstraction Layer oppure Astrazione dell'Hardware. Questo insieme di funzioni di input e output (I/O) ha il compito di tenere conto di tutte le differenze fra dispositivi fisici diversi al posto del programma che lo userà, nascondendogli la verà identità. E' intuibile capire come dotando un programma di un HAL se ne migliora notevolmente la portabilità su altri tipi di Hardware/ Sistemi operaitvi in quanto se occorre adattare/modificare si interviene direttamente sull'HAL, senza necessita di toccare il codice sorgente del programma stesso, inoltre non è particolarmente complesso aggiungere una specifica sezione non prevista all'inizio. In base all'HAL esistono ben quattro categorie di Kernel


    • Kernel Monolitico
    • MicroKernel
    • Kernel ibrido
    • EsoKernel


    Tuttavia i Kernel sono sonstanzialmente riconducibili a due categorie: Monolitici e MicroKernel. Il Kernel Monolitico, di cui Linux fa parte, ha una struttura molto complessa e dalle dimensioni notevoli mente nei MicroKernel la struttura è assai più semplici in quanto si occupa di gestire soltanto la memoria, il resto delle operazioni vengono delegate a moduli esterni che sono in grado di comunicare tra loro tramite appositi protocolli (molto simili ai protocolli di rete) .

    Per capire il modo in cui il Kernel lavora e fornisce l'accesso alle risorse di sistema è doveroso conoscere il modo in cui è suddiviso il Sistema Operativo. Esso si suddivide principalmente in due blocchi:


    • User Space (spazio utente)
    • Kernel Space (spazio del kernel)


    In un sistema GNU/Linux è presente una libreria chiamata GNU C ( Glibic ) situata nell'User Space, essa gestisce l'interfaccia per le chiamate di sistema relative al Kernel e regola i meccanismi che intercorrono tra il transito dall'User Space al Kernel Space. Il Kernel Linux si divide sostanzialmente in tre grandi blocchi e sono:


    • Chiamate di sistema/System Call Interface: Questo meccanismo come abbiamo già spiegato in precedenza si occupa sostanzialmente di gestire delle funzionalità basilari come la lettura e la scrittura.
    • Sorgente del Kernel indipendente: Questo blocco NON dipende dall'architettura della macchina sul quale è in esecuzione è dunque presente su ogni processore che supporta Linux.
    • Sorgente del Kernel dipendente: Questo blocco dipende dall'architettura della macchina sul quale è in esecuzione.


    I processi in esecuzione vengono detti threads e rappresentano una virtualizzazione del processore. La gestione dei threads prevede anche una condivisione della cpu oltre che uno scheduler che opera in termini prefissati a prescindere dai threads in esecuzione. Questo scheduler viene chiamato scheduler O(1) , e indica l'intervallo temporale che viene usato per gestiore un thread ed è lo stesso valore anche per più threads...Questo tipo di scheduler può gesrire anche architetture multiprocessore.
    Ultima modifica di Crotan; 14-10-14 alle 13:04

  13. I seguenti 7 Utenti hanno ringraziato Crotan per il post:

    Brrmatteo (04-08-13),fedelamb (01-08-13),Kylua (26-01-14),leonardodettoileo (24-09-13),miseusegau (01-08-13),NiloGlock (10-09-14)

  14. #7
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    Reserved for future eventualities

  15. I seguenti 7 Utenti hanno ringraziato Crotan per il post:

    Brrmatteo (04-08-13),fedelamb (01-08-13),grifis78 (20-08-13),Kylua (26-01-14),leonardodettoileo (24-09-13),miseusegau (01-08-13)

  16. #8
    Androidiano VIP L'avatar di Brrmatteo


    Registrato dal
    Mar 2013
    Messaggi
    1,759
    Smartphone
    LG G3 && Nexus 6P

    Ringraziamenti
    626
    Ringraziato 655 volte in 437 Posts
    Predefinito

    Ciao la guida vale solo per nexus?
    Se ti sono stato utile clicca su Thanks sarà come una donazione però gratuita quindi...
    Crea il tuo dropbox qui: http://db.tt/ZJHF6POn

  17. #9
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    Quote Originariamente inviato da Brrmatteo Visualizza il messaggio
    Ciao la guida vale solo per nexus?
    Ciao, le nozioni sono di natura generica e le metodiche sono pressocchè le stesse per tutti i dispositivi

  18. #10
    Androidiano VIP L'avatar di Brrmatteo


    Registrato dal
    Mar 2013
    Messaggi
    1,759
    Smartphone
    LG G3 && Nexus 6P

    Ringraziamenti
    626
    Ringraziato 655 volte in 437 Posts
    Predefinito

    Non mi funziona il link a Dropbox per il gps
    Se ti sono stato utile clicca su Thanks sarà come una donazione però gratuita quindi...
    Crea il tuo dropbox qui: http://db.tt/ZJHF6POn

Pagina 1 di 9 123 ... ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy