Sunday 30 December 2012

Archos Video Player (e altro) su Mediacom 101 S2 (e altri tablet Jelly Bean RK3066)

Nota bene: mi sono accorto poco dopo aver terminato questa guida che Archos Video trasferito anche se all'inizio funziona dopo un po' si blocca a causa di un sedicente 'license verification error'.  Archos Music e Talk funzionano come descritto: però se se siete interessati al player video c'è ancora del lavoro da fare (ho già provato ad adattare il build.prop - niente da fare), comunque lascio il post perchè qualche informazione potrebbe essere utile comunque.

La Archos ha recentemente pubblicato su google play la versione 'universale' del suo player video. Si tratta di un player con una ottima interfaccia utente, e la possibilità di sfruttare share di rete (SMB) e server DLNA, anche se non mi sembra raggiunga il livello di compatibilità di un player come VLC.
Prima di questa release il player era disponibile solo come app di sistema in alcuni tablet archos come il Gamepad o l'Archos 80 XS: in questi dispositivi, basati su chipset RK3066 è sfruttata (a quanto pare) l'accelerazione nativa della GPU. Su altri tablet con lo stesso chipset (come il Mediacom 101 S2 su cui ho testato questa guida, comunque le informazioni dovrebbero essere valide anche per altri tablet con lo stesso hardware e la stessa versione, Jelly Bean, di Android) gira benissimo la versione commerciale del player: se si ha anche un dispositivo Archos - altrimenti sarebbe irregolare - e si vuole provare a usare lo stesso player video sull'altro tablet, ecco come fare. Inoltre il firmware Archos contiene anche una versione di Google Talk e di Magazines (non molto utile in italia credo) che può far comodo su dispositivi come il 101S2 che non dispongono nativamente di queste app.

Per effettuare lo spostamento delle app in questione è necessario:

- saper utilizzare ed eventualmente ricompilare programmi a linea di comando da window e/o linux
- poter almeno leggere dati da una immagine in formato RAW ext3, come quelle dei firmware archos: io ho usato direttamente linux, su window si può provare un tool come http://www.diskinternals.com/linux-reader/
- saper spostare file da/a il proprio dispositivo android, possibilmente con ADB (per il 101S2 vedi la mia guida in questo blog) oppure avere i permessi di root sul device e usare un file manager che li sfrutti (p.es. ES File explorer, per il root su 101S2 vedi qui)

Per prima cosa è necessario procurarsi una immagine del firmware archos. Ad oggi 30/12/12 l'unica disponibile è quella del Gamepad disponibile qui o comunque nella sezione download di www.archos.com.

Il file dovrebbe essere un file in formato standard Rockchip, ovvero l'impacchettamento di un loader e di alcune immagini raw delle varie partizioni da ricreare: tuttavia con i Wendal's tools originali apparsi sul forum di slatedroid (versione compilata qui) o anche la versione specifica per RK3066
non è possibile estrarre le immagini raw dal file update.img. A questa URL su github
menzionata nel thread originale su slatedroid però è possibile scaricare  sorgenti di tool alternativi a quelli di Wendal che scompattano senza problemi il firmware archos. Dei tools, l'unico che interessa è rkunpack.c. Lo si può compilare (su Linux, o su Windows, posto che si disponga di un compilatore adeguato come quello del pacchetto cygwin) semplicemente con

cc rkunpack.c -o rkunpack (linux)

cc rkunpack.c -o rkunpack.exe (windows con cygwin)

se non ce la fate a ricompilare da soli rkunpack ecco qui una versione windows ricompilata col mio cygwin (su w7 a 64 bit, ma gira anche su xp a 32, servono anche le librerie cyg*.dll incluse nello zip ovviamente). Una volta posto il file update.img nella stessa cartella di rkunpack.exe e degli altri file dare da prompt dei comandi:

rkunpack update.img

il tool creerà una cartella image con dentro i file .img delle varie partizioni in formato raw/ext3. Il file che ci interessa è il più grande, system.img

Per accedere ai file da spostare io ho copiato i file su una macchina Linux (Ubuntu 11 per la precisione) e da shell ho usato il comando:

sudo mount -t ext3 -o loop /percorso/system.img /home/febo/cartella

ovviamente nell'esempio system.img è stato posto in /percorso ed è stata creata la cartella /home/febo/cartella : fatto questo i file della partizione sono visibili a partire da questo ultimo percorso e ricopiabili a piacere altrove. Alternativamente si può usare un tool windows, come già detto  http://www.diskinternals.com/linux-reader/ funziona.

Fatto questo è possibile posizionarsi nella cartella app della partizione e copiare i file .apk delle app che interessano. I file nel caso del gamepad sono:

ArchosMusic.apk (video player archos)
ArchosVideo.apk
(player mp3 archos)
Magazines.apk
(applicazione google per abbonamenti)
Talk.apk
(google talk per jelly bean)

Talk.apk e Magazines.apk sono installabili così come sono, basta copiarli sul tablet e installarli con un file explorer, o apk installer, o altro tool. Io uso ADB da linea di comando così:

adb install Talk.apk

adb install Magazines.apk

Provando a fare lo stesso con le altre due applicazioni si ottiene invece un bell'errore MISSING_SHARED_LIBRARY.

Esaminando meglio i due apk (consiglio questo ottimo tool, android-apktool) in effetti si nota che manca un file .jar del framework. Per estrarlo dal firmware archos e reinstallaro prelevare dall'immagine raw montata i file

./framework/com.archos.frameworks.jar

./etc/permissions/com.archos.frameworks.xml

i file devono essere ricopiati con i giusti permessi (644)  nelle corrispondenti cartelle /system/framework e /system/etc/permissions del device di 'arrivo'. Seguono i comandi da dare per inserire i file da ADB (posto che i 2 file siano nella stessa cartella di adb.exe).

adb root

adb remount

adb push com.archos.frameworks.jar /system/framework

adb shell chmod 644 /system/framework/com.archos.frameworks.jar

adb push com.archos.frameworks.xml /system/etc/permissions

adb shell chmod 644 /system/etc/permissions/com.archos.frameworks.xml


Io ho usato questo sistema: sicuramente si dovrebbe procedere anche con un file manager come Root File Explorer o ES File Explorer con l'opzione apposita settata, anche se è possibile che sia comunque necessario usare adb remount per rendere scrivibile /system (non ho provato).

Una volta fatto questo al riavvio i due apk dei player archos saranno installabili senza problemi. Da Adb:

adb install ArchosMusic.apk

adb install ArchosVideo.apk


Una eventuale versione commerciale del player Archos deve essere disinstallata, altrimenti l'installazione fallirà ancora (da ADB errore SHARED_USER, messaggio generico di installazione fallita da android).

Mediacom 101 S2: inserire l'icona di Gmail sull'home screen

Un problema noto del nuovo tablet Mediacom 101 S2 è l'assenza dell'icona di Gmail nel launcher di sistema.  In realtà la cosa è dovuta alla 'non ufficialità' della presenza delle Google apps nel firm del tablet: l'app in se e per se è presente, però non appare nell'app drawer e non c'è un modo semplice per far apparire l'icona sull'home screen. Per il momento l'unica soluzione trovata è stata ..installare un altro launcher.

Il problema si verifica con i due firmware di 'fabbrica' del 101S2: con il firmware presente fino a qualche giorno fa sul sito Mediacom bastava aggiornare Gmail e l'icona appariva subito. Il firmware però aveva anche la 'feature' di disabilitare la fotocamera posteriore del tablet ed è stato recentemente sostituito con l'immagine del firmware 'di fabbrica' del 19/10/2012 (vedi la mia recensione al riguardo). Visto che per il momento il rilascio di un aggiornamento vero sembra allontanarsi ho speso un po' di tempo per approfondire una mia idea relativa alla creazione 'manuale' dell'icona smanettando sulle impostazioni del launcher stesso. La ricerca ha avuto - almeno sulla mia unità - successo. Questo è il resoconto, ovviamente non posso offrire alcuna garanzia che funzioni anche con il vs 101S2, se perdete dati o altro sono problemi vostri, etc.

La procedura è stata provata con un firmware del 19/10/2012 flashato dall'immagine scaricata dal sito mediacom. Dovrebbe funzionare tranquillamente anche con l'altro firmware del 27/9/2012 ma non ho avuto modo di provare. Oltre a questo i requisiti sono:

- il tablet DEVE ESSERE ROOTATO : seguire una delle guide presenti online se non lo è già, ad esempio la mia.

- serve un file manager che sfrutti i permessi di root e consenta di copiare file da/a qualsiasi parti del file system del tablet. Io ho usato ES File Explorer abilitando dalle opzioni la modalità root, ma va bene qualsiasi altro programma simile

- bisogna essere in grado di spostare dei file dal tablet al proprio PC o viceversa (io ho usato lo stesso ES File Explorer in modalità LAN, ma ovviamente va bene qualsiasi altro sistema)

- serve un editor di file SQLite. Io ho usato 'SQLite Database browser' un ottimo freeware disponibile per tutte le piattaforme.

- per semplicità potete anche scaricare dal mio sito questo file con i dati dell'icona gmail già pronti da copiaincollare.

Se non avete un minimo di pratica nella gestione di qs file sia sul tablet che su android, sconsiglio di procedere oltre: fate meglio ad aspettare la prossima release del firmware: se non sapete cosa fare rischiate di dover riflashare il tablet (cosa ormai non drammatica vista la disponibilità di un'immagine finalmente funzionante dalla Mediacom)

Il trucco consiste semplicemente in questo: il launcher standard tiene le impostazioni delle icone in una tabella chiamata 'Favorites' in un database SQLite contenuto nel file /data/data/com.android/launcher/databases/launcher.db nella memoria del tablet. Un'icona è semplicemente un record di questa tabella, con campi relativi al nome dell'icona, all'apk da lanciare, alle coordinate dell'icona e al suo tipo etc. Ho preso da un altro dispositivo android (nella fattispecie, un'emulatore) i dati dell'icona, li ho riscritti su una copia del file launcher.db preso dal 101S2 e ho riscritto il file sul tablet (cosa possibile SOLO da root). Riavviando subito il tablet l'icona di Gmail appare finalmente senza problemi apparenti.

Per procedere la cosa più semplice è aggiungere nel punto in cui si vuole fare apparire l'icona di GMail l'icona di una qualsiasi altra app: poi basterà cambiare i campi della tabella rilevanti. Nell'esempio mostrato io ho aggiunto l'icona di 'Play Books' ma va bene qualsiasi icona.

Una volta fatto questo si tratta di localizzare il file launcher.db nella cartella /data/data/com.android/launcher/databases del tablet col file manager e di spostarlo in qualche modo sul proprio pc, dove in precedenza sarà stato installato SQLite Database Browser. Consiglio di copiare il file launcher.db su una sua cartella separata. Lanciate l'editor e localizzate il file con l'opzione Open Database del menu File. Fatto questo, scegliete la tab 'Browse Data' e la table 'favorites'. Dovrebbe apparire la lista delle icone del vs tablet, in fondo ci dovrebbe essere l'icona che avete aggiunto per tramutarla in quella di gmail. Nell'esempio è evidenziata la 'Play books'


I campi da modificare per fare questo non sono molti, eccoli (ovviamente si vedono scrollando orizzontalmente verso destra)
title: titolo dell'icona, va cambiato in

Gmail

intent: 'cosa' chiamare, inserire (esattamente) questo testo:

#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.google.android.gm/.ConversationListActivityGmail;end


itemType: è un valore numerico che se non lo fosse già deve essere messo a 0 (zero).

iconPackage: cancellare il valore presente (altrimenti rimane l'icona dell'applicazione di partenza)

iconResource: cancellare il valore presente (altrimenti rimane l'icona dell'applicazione di partenza, come sopra)

icon: deve contenere la scritta PNG preceduta e seguita da due caratteri speciali. Se non ci fosse, basta copiaincollarla da un'altra riga della tabella.

Ho messo in linea il file http://www.delenda.net/varie/launcher.zip che contiene il database preso dall'emulatore con i dati già pronti per un'icona gmail da copiaincollare: la cosa più semplice è lanciare due sessioni di SQLite Database browser e copiare i valori dei 5 campi indicati sopra. Il file E' SOLO UN ESEMPIO NON RICOPIATELO SUL TABLET !!!

Una volta editati i campi salvate le modifiche col bottone apposito e riportate il file sul vs tablet.

Col file manager DOTATO DI PERMESSI DI ROOT copiate il file modificato nello stesso percorso /data/data/com.android.launcher/databases da cui era stato preso. In teoria l'operazione è pericolosa, nel senso che si potrebbe corrompere il file ma ho fatto diverse copie senza problemi nel ricercare la giusta combinazione di campi e il loro significato (idealmente bisognerebbe procedere in altro modo, ev. da recovery). Ad ogni modo appena riscritto il file launcher.db è bene riavviare il tablet. Se tutto va bene dovrebbe apparire l'icona di Gmail. Se l'icona appare ma da 'applicazione non installata' oppure c'è ancora l'icona della vecchia applicazione o ancora un'icona col robottino verde di android avete probabilmente sbagliato a copiare qualche campo (riprovare).

Nota bene: ho anche provato la procedura con l'APK di Gmail 4.2 disponibile in questa pagina : è una versione di Gmail più aggiornata, la cui installazione però richiede ancora i permessi di root, visto che bisogna disintallare il Gmail di sistema (ad esempio con Link2SD o altro 'root uninistaller')





Sunday 9 December 2012

Trova le differenzi

Maledetto autunno piovoso e lavorativo che mi ha fatto scoprire in colpevole ritardo questa opera di ignoti vandali che dovrebbero essere staffilati in pubblico per le loro devastazioni, non prima di essere tuttavia ringraziati per il loro acvme.

Tutto somato comunque un candidato senza differenzi da Renzi alla carica di p.d.c. concorrerà comunque... C'è da pensare...