Category Archives: Questo te lo spiego io

Questo te lo spiego io: La Dalvik VM

dalvik

Nell’ambiente Android si sente spesso parlare della Dalvik Virtual Machine, particolarmente quando si tratta di eseguire modding sul proprio dispositivo. Oggi proverò a trattare l’argomento in maniera abbastanza approfondita.

Troverete un glossario a piè di pagina.

La Dalvik VM(1) è una Process Virtual Machine (2), sviluppata appositamente per il sistema operativo Android da Dan Bornstein. Si tratta del software all’interno del quale girano le applicazioni. Come ben sappiamo le applicazioni Android vengono scritte in linguaggio Java, il quale viene poi compilato non direttamente in linguaggio macchina ma in un formato intermedio, denominato Bytecode(4). Attenzione: non si tratta dello stesso Bytecode cui siamo abituati in ambiente Java. In ambito Android non avremo dunque i file .CLASS (JVM(6) compatible), ma file .DEX (Dalvik compatible). Questo formato è stato pensato per soddisfare le esigenze dei dispositivi mobili che, rispetto ai pc, soffrono di poca memoria e scarsa potenza di calcolo.

Avviene dunque una conversione (in fase di compilazione) che porta i file .CLASS  a diventare file .DEX, vediamo cosa cambia:

  • un singolo file .DEX può includere più di una classe;
  • più in generale vengono eliminate le ripetizioni di codice;
  • il set di istruzioni viene modificato.

Questi accorgimenti consentono di ottenere del codice più “leggero”. In questo modo (ma ho solo accennato alle modifiche che avvengono) il Bytecode ottenuto sarà diverso da quello Java classico, e diverrà specifico per la Dalvik VM.

A partire da Android 2.2 (Froyo) la Dalvik utilizza un Just-In-Time Compiler(5). Quest’ultimo offre prestazioni migliorate ma modifica la natura della Dalvik, che dopo la traduzione del Bytecode in linguaggio macchina, diverrà una VM hardware-specific. Inoltre, il codice tradotto verrà memorizzato nella cache per poter essere riutilizzato: ecco dunque spiegata la Dalvik cache.

E’ importante precisare che la Dalvik, essendo una Process VM, gestisce un solo processo per macchina virtuale, ma il sistema può gestire più macchine virtuali contemporaneamente.

La DVM ha un’architettura registered-based che ha il vantaggio di ridurre il numero di istruzioni necessarie per implementare il codice rispetto ad un’architettura stack-based, quale ad esempio la JVM.

Glossario

1.Virtual Machine: una macchina virtuale è un software che simula una macchina fisica, ad esempio un computer. Può simulare una macchina realmente esistente oppure una macchina con caratteristiche diverse da quelle esistenti. All’interno della VM i programmi girano come su un dispositivo fisico.

2.Process Virtual Machine: si tratta di un tipo particolare di macchina virtuale, che gira all’interno del sistema operativo ospitante come una normale applicazione e supporta un singolo processo al suo interno (quindi una sola applicazione per macchina virtuale nel caso della Dalvik). Il vantaggio delle VM di questo tipo è l’indipendenza dalla piattaforma in quanto i processi girano su di essa e non hanno bisogno di dialogare direttamente né con l’OS né con l’hardware. La Process VM viene creata quando il processo si avvia ed eliminata non appena esso viene concluso. E’ molto importante capire che questo tipo di VM hanno bisogno di un interprete(3) per funzionare.

3.Interprete: è un software che legge, interpreta ed esegue delle istruzioni scritte in un linguaggio di programmazione. In informatica esistono sostanzialmente due possibilità, che si combinano variamente tra di loro: compilatore ed interprete. Il primo lavora una sola volta, traducendo il codice in linguaggio macchina e quindi rendendolo specifico per una piattaforma hardware; il secondo esegue la conversione ogni volta che viene eseguito, consentendo così una certa indipendenza dalla piattaforma. Il codice compilato risulta evidentemente più veloce in fase di esecuzione rispetto al codice interpretato. Come già accennato, esistono varie combinazioni possibili: una di queste è il Bytecode.

4.Bytecode: Si tratta di un linguaggio intermedio, maggiormente ottimizzato rispetto al codice di alto livello. E’ un codice compilato, che avrà comunque bisogno di un interprete per poter essere letto e quindi eseguito.

5.Just-In-Time Compiler: consente di migliorare le prestazioni di runtime, andando ad inserirsi tra quei metodi che si trovano a metà tra interpretazione e compilazione. Il punto di partenza è il bytecode (più in generale, un codice intermedio) il quale viene trasformato in linguaggio macchina a tempo di esecuzione. In questo modo si mantengono le caratteristiche di indipendenza dalla piattaforma e allo stesso tempo ci si avvicina alle performance offerte dai linguaggi compilati.

6.JVM: macchina virtuale Java.

La fonte principale di questo articolo è Wikipedia, nella completissima versione inglese.

Nel caso vi stiate chiedendo il motivo della strana immagine all’inizio del post, sappiate che non sono impazzito. La Dalvik prende infatti il proprio nome da un piccolo villaggio islandese dal quale proviene la famiglia dello sviluppatore Dan Bornstein.

Roberto Dettori

Questo te lo spiego io: la recovery

Dopo alcuni articoli più sul generale veniamo ad un argomento più interessante: la Recovery!

Purtroppo questa volta wikipedia non ci viene molto in aiuto in quanto la descrive come

Recovery, a piece of software in Android (operating system) smartphones that enables the owner to recover from software damage

Sembra chiaro non chiarisce molto, cerchiamo quindi di spiegarlo in parole molto semplici.

La recovery è un piccolissimo sistema operativo (indipendente da android) che permette di eseguire alcune operazioni tecniche sul sistema operativo.

Di base le recovery montate sui dispositivi permettono di fare pochissime cose, quindi di solito si sostiuiscono con alcune modificate. Le più famose sono

Le recovery possono essere installate o flashando tramite fastboot l’immagine della recovery, o direttamente flashate tramite recovery (se la vostra di base già ve lo permette), oppure tramite apposite app

che permettono di fare tutto il lavoro in automatico. State però attenti perchè la recovery dipende strettamente dall’hardware del dispositivo quindi state attenti a quale versione flashate perchè potreste ritrovarvi con un fermacarte!!

Veniamo ora ai compiti principali che permette di fare una recovery (più o meno hanno tutti le stesse funzioni)

  • flashare pacchetti zip (per installare i vari zip di rom, recovery o kernel)
  • wipe della cache (eliminazione dei dati di cache della applicazioni, non fa perdere nessun data)
  • wipe dei dati (eliminazione di tutti i dati del dispositivo, il dispositivo viene riportato allo stato iniziale)
  • backup/restore dei dati (potrete salvare e ripristinare lo stato completo del dispositivo: applicazioni, dati,ecc)
  • montare il dispositivo (permette di far vedere il dispositivo collegato tramite usb al pc come una chiavetta usb)
  • Spegnere il dispositivo
  • Riavviare il dispositivo

Per interagire con le recovery di solito si utilizzano i tasti volume per spostarsi tra i menu ed il tasto di power per selezionare le opzioni, ma alcune hanno delle versioni modificate per supportare anche il tochscreen

So che all’inizio la recovery può sembrare un po’ ostica, ma una volta imparata ad usare ci permetterà di gestire il vostro dispositivo in tutta sicurezza.

Questo te lo spiego io: il bootloader

android-bootloader

Dopo aver parlato del root e del kernel, questa è la volta di qualcosa di un pò più complicato; il bootloader

Iniziamo come sempre con la definizione che ne dà wikipedia:

In informatica il boot loader è il programma che, nella fase di avvio (boot) del computer, carica il kernel del sistema operativo dalla memoria secondaria alla memoria primaria, permettendone l’esecuzione da parte del processore e il conseguente avvio del sistema. Il termine deriva dal fatto che il processo di avvio di un computer viene chiamato bootstrap (dal detto inglese to lift oneself by one’s own bootstrap, “tirarsi su per le fibbie degli stivali”). Nel caso di più sistemi operativi installati sulla stessa macchina, il caricamento da parte del boot loader è preceduto dalla selezione del sistema operativo desiderato da parte dell’utente tramite il boot manager.

Prima cosa da notare è che, come abbiamo visto anche negli altri articoli, anche questo è un concetto comune a tutti i sistemi operativi ed architetture.

Cerchiamo adesso di capire in parole povere cosa fà il bootloader: esso prende il controllo appena il dispositivo si avvia e sceglie quale sistema operativo far partire. Nel cosa del nostro caso le scelte possibili sono

  • Fastboot
  • Recovery
  • Rom android (opzione di default)

Normalmente non notiamo nemmeno la sua estenza in quando di base viene eseguita la rom android, ma dobbiamo sapere che è il nostro salvagente, infatti qualsiasi modifica che può anche far sembrare morto il nostro smartphone può essere annullata ripristinando una rom di base tramite i vari tool che utilizzano il fastboot.

Se vogliamo vedere il nostro bootloader dobbiamo trovare la combinazione di tasti da premere all’avvio per farlo avviare ( un pò come quando entriamo nel bios del pc premendo ESC) che di solito cambia da dispositivo a dispositivo ma che di solito è qualcosa del tipo POWER+VOL SU o POWER+VOL GIU

E ci troveremo davanti a qualcosa del genere

android-bootloader

Dove potremo vedere i dati del nostro dispositivo.

Veniamo ora alle note dolenti. Purtroppo ultimamento molti dispositivi Android hanno il bootloader bloccato, questo vuol dire che non sarà possibile flashare firmware o recovery non ufficiali, e purtroppo visto che è strettamente legato all’hardware non è possibile sostituirlo con un’altro. Alcune case produttrici forniscono anche le istruzioni su come sbloccarlo avvisando che facendolo si perde la garanzia, altre no e bisogna aspettare che qualche hacker riesca a scardinarlo e condivida la sua esperienza.

Il mio consiglio è di cercare sempre di avere uno smartphone con bootloader sbloccato o almeno sbloccabile in quanto anche se non decidiamo di installare rom modificate o altro, abbiamo sempre una porta aperta per poter cercare di sistemare alcune situazioni di blocco che possono verificarsi e che necessiterebbero di inviare il nostro device in assistenza!

Nei prossimi articoli vedremo anche il fastboot e la recovery,  in modo da avere un migliore quadro di insieme su come è fatto il cuore del nostro sistema android!

Questo te lo spiego io: Il Kernel

androidislinux

Dopo la prima puntata di questa rubrica incentrata sul root, adesso passiamo al kernel!

Iniziamo a vedere come lo definisce Wikipedia:

 il kernel (pronuncia IPA: [ˈkəːnəl]) costituisce il nucleo di un sistema operativo. Si tratta di un software avente il compito di fornire ai processi in esecuzione sull’elaboratore un accesso sicuro e controllato all’hardware. Dato che possono esserne eseguiti simultaneamente più di uno, il kernel ha anche la responsabilità di assegnare una porzione di tempo-macchina (scheduling) e di accesso all’hardware a ciascun programma

La prima cosa che appare chiara  è che quindi qualsiasi sistema operativo ha un proprio kernel (mac,win,linux o altro che sia) e Android in particolare deriva dal kernel di Linux.

Oltre a questo il kernel è diverso per qualsiasi device e può variare anche in base a diverse versioni dello stesso device (ad esempio i 3g e 4g) in quanto avendo dell’hardware diverso hanno necessità di driver per accedervi diversi integrati nel kernel

La cosa positiva di avere questa divisione con il kernel che si occupa dei driver permette di sostituirlo agevolmente per aumentare le prestazioni o con versioni più aggiornate senza intaccare il funzionamento del sistema. Infatti è possibile installare un kernel compatibile con un il nostro device sia avendo una rom stock (cioè quella ufficiale che troviamo nel nostro dispositivo così come è uscito dalla fabbrica) sia avendo una rom custom tipo la CyanogenMod o la AOKP, anche se spesso bisogna stare attenti alla versione del kernel che si installa perché alcuni potrebbero non funzionare con determinate rom modificate (ultimamente soprattutto la CyanogenMod soffre di questi problemi)

Normalmente il kernel è un file zip da installare tramite la recovery (se non sapete di cosa stiamo parlando seguiteci nella prossima puntata!) anche se non sono molte le recovery standard che permettono di farlo, quindi forse avrete bisogno di una recovery modificata tipo CWM, oppure esistono alcuni programmi che permettono di installare in automatico alcuni kernel.

So che la domanda che vi state facendo è “ma conviene installare un altro kernel?”. Purtroppo la risposta non è così semplice. Se il vostro device funziona bene direi che non avete bisogno di cambiarlo. Se volete poter overcloccare la vostra CPU o cercare di spremere a fondo il vostro dispositivo, allora potete farci un pensierino, ricordate però che i kernel modificati a volte posso causare riavvi improvvisi o freeze del sistema e purtroppo non è sempre facile capirne il motivo.

Il mio consiglio è come sempre di andare sul forum di XDA e cercare tutto il materiale per il vostro dispositivo, ricordando sempre di stare molto attenti alla versione del proprio device!

Questo te lo spiego io: Il root

 

Iniziamo questa serie di articoli tecnici spiegati a tutti con l’argomento più comune ed il più richiesto. A chi non è mai capitato di sentirti chiedere “ma tu hai fatto il root?”, “ma se lo faccio perdo la garanzia?”,”si ma tanto a cosa mi serve?”. Ecco da oggi potrete dargli questo link e potranno scoprire tutto da soli ;D Ma bando alla ciance e iniziamo a entrare nel vivo

Cosa è il  “root”

A dispetto di quello che si possa pensare, il root non è ne un programma ne un’operazione da eseguire.

Cercando su wikipedia ci sono 2 definizioni

Il nome root significa radice, in quanto è l’unico a poter modificare i file presenti nella directory ‘/’, detta per l’appunto root

e anche

L’utente root (chiamato anche toor in BSD o avatar) è l’utente che dispone del massimo controllo sul sistema;

Nei sistemi basati su Windows NT, il corrispondente di root è l’account administrator

Il root su android

Come si riporta tutto questo su android? Innanzitutto è necessario sapere che i produttori di telefoni eliminano totalmente l’utente root per evitare che gli utenti possano danneggiare il proprio apparecchio, visto che con i permessi root è possibile eliminare anche file di sistema che impedirebbero al dispositivo di avviarsi.

In android poi ogni programma ha un proprio utente nel sistema con il quale viene eseguito, quindi il significato del root sarà concedere o meno ad ognuno di essi i massimi privilegi possibili per il sistema

Cosa ottengo con il root?

Veniamo adesso al cosa pratico, cosa posso ottenere con i permessi di root?

  • Controllo totale del dispositivo: potrete scaricare ed utilizzare qualsiasi tipo di file, oltre ad aver accesso a qualsiasi file del sisteme per rimuovere applicazioni native.
  • Backup Totale: potete in qualsiasi momento creare un backup totale del vostro sistema tramite recovery o delle singole applicazioni con relativi dati con programmi tipo Titanium Backup. Forse il caso più importante è quello degli sms/mms e lista chiamate che non vengono salvati in automatico e di cui vorremmo avere una copia di sicurezza.
  • Liberare spazio: potrete  muovere tutta la vostra Cache sulla SD Card, oppure eliminare programmi installati di base sulla nostra rom ma che non riteniamo utili, o tutta quella serie infiniti da sfondi animati che non utilizza nessuno ed occupano solo una marea di spazio
  • Eseguire Applicazioni Speciali quali :
  1. Android-WiFi-Tether oppure Barnacle Wifi-Tethering: Per condividere la vostra connessione internet anche con il pc.
  2. SuperSU: per Abilitare/disabilitare i permessi di Root per ogni singola applicazione
  3. Startup Manager: Impostare le applicazioni da eseguire all’avvio del vostro sistema, per una maggiore velocità e pulizia
  4. SetCPU for Root Users: permette di eseguire un Overlock del processore, cioè di regolarne la velocità, aumentandola per maggiori prestazioni e diminuendola per aumentare la durata della batteria.
  5. Titanium Backup: come abbiamo detto in precedenza per fare il backup di tutto quello che vogliamo
  • Installare Custom ROM: cioè Firmware non originali, svilluppati da terzi come ad esempio la CyanogenMod. Il perché installare una rom custom meriterebbe un articolo a parte, ma principalmente per avere un sistema pulito, con più feature e più ottimizzato.

Come lo ottengo

Adesso che abbiamo capito cosa è, veniamo al sodo e cerchiamo di capire come ottenerlo. Purtroppo non esiste un metodo universale, in quanto bisogna sfruttare delle falle specifiche per ogni dispositivo, ma per fortuna su internet esistono molti programmi che permettono di ottenerlo. I più famosi sono

  1. 1Click Root
  2. SuperOneClick
  3. Z4Root
  4. Unlock Root

I consigli quando si utilizzano questi programmi sono i seguenti:

  • Leggere attentamente la procedura da eseguire (anche se molto spesso si riduce semplicemente ad installare un programma sul dispositivo o sul pc e premere un tasto)
  • Controllare attentamente che il programma sia compatibile con il nostro dispositivo (attenti perché a volte esisteno varie versione dello stesso device ad esempio il 4g che a volte non è compatibile con le altre versioni)
  • Se avete dei dubbi cercate informazioni sul vostro device su XDA (il miglior forum sull’argomento) dove troverete sicuramente il vostro e avrete informazioni su quale sia il miglior programma da utilizzare e come farlo
  • Come per tutte questa tipologia di operazioni controllate di avere la batteria carica, uno spegnimento del dispositivo potrebbe portare a trasformare il vostro telefono in un soprammobile ;D

Quali controindicazioni ci sono?

Innanzitutto diciamo che il problema principale è che per questa modifica alcune case produttrici (purtroppo quasi tutte ;( ) invalidano la garanzia. Però (c’è sempre un però!) ricordiamoci sempre che in caso il dispositivo sia morto nessuno potrà vedere che avete rootato il dispositivo, mentre nel caso ci sia qualche altro tipo di problema è sempre possibile flashare una rom originale riportando il cellulare alla situazione iniziale e addirittura alcuni dei programmi citati precedentemente permettono anche di eliminare il root riportando il dispositivo allo stato iniziale.

Oltre a questo ci sono alcuni programmi tipo “Sky go” che riconoscono i dispositivi rootati e si rifiutano di partire, in quel caso sarà sufficiente andare nel programma SuperSU (o quello presente nel vostro root, tanto sono tutti molto simili!) e togliere la spunta Abilita Superuser per evitare che il programma possa rilevare la presenza dei permessi di root

Da non dimenticare poi di dover decidere bene a quale programma concedere i privilegi di root, ricordatevi che con il root si può fare di tutto, quindi un programma malevolo potrebbe fare ciò che vuole, ma con un po’ di testa è possibile premunirsi, se un gioco o un semplice programma di chat o simili richiede il root bisogna fermarsi un’attimo e farsi venire il dubbio che quel programma ha qualcosa che non và.

Lo consiglieresti?

La risposta è una sola “sicuramente si”, una volta che lo hai provato non torni più indietro! Le cose principali sono naturalmente il backup e l’aggiornamento di nuove rom custom.

Il backup mi ha salvato molte volte che il telefono si è impallato e se non avessi avuto il backup avrei perso tutto, e le rom custom in certi momenti diventano necessarie quando i produttori decidono di non supportare più determinati dispositivi.

Per chi poi volesse smanettare un po’ l’overclock sarà sicuramente una cosa da provare!

Non vi resta altro che provare e farci sapere se sareste disposti a tornare indietro ;D e naturalmente mi ricordate che questa è solo una guida, non ci assumiamo nessuna responsabilità sui danni che si potrebbero verificare applicando questa procedura in modo errato ( Uomo avvisato…..)

 

 

 

Questo te lo spiego io: La nuova rubrica

Domani iniziamo una nuova rubrica “Questo te lo spiego io”. Non vogliamo sentirci superiori a voi, ma vogliamo semplicemente cercare di fare chiarezza insieme su quegli argomenti che spesso sono nebulosi e non chiari.

Noi cercheremo di spiegarli nel modo più semplice possibile e nel caso ci sia qualche dubbio saremo presenti nei commenti e nel forum per cercare di sciogliere tutti i dubbi.

Il primo argomento che tratteremo sarà il root, forse l’argomento più chiacchierato e meno chiaro ai più. Successivamente vorremmo trattare argomenti come il kernel, la recovery, le custom rom, ecc

Fateci sapere cosa ne pensate e quali argomenti vorreste vedere trattati, cercheremo di accontentarvi!!