Tutorial creare fişiere update.zip (edify scripting)

Nu ştiu alţii cum sunt, însă eu de multe ori după ce instalez/actualizez un nou ROM sunt nevoit să copiez manual anumite fişiere ce sunt suprascrise in procesul de instalare/actualizare. Pentru că lista de fişiere şi aplicaţii poate fi destul de mare, dar şi pentru a usura intreg procesul, eu unul prefer să le încapsulez întru-un fişier update.zip ce poate fi instalat din custom recovery. Procesul de creare a acestor fişiere update.zip nu este chiar aşa de complex precum pare. Trebuiesc urmati nişte paşi simpli, pe care o să îi detaliez eu în continuare. Acest tutorial a fost scris pentru windows, însă un utilizator de linux poate foarte usor să adapteze pașii de mai jos pentru a obține același rezultat. Articolul o sa fie destul de lung şi detaliat, aşa că vă recomand să vă înarmaţi cu ceva răbdare.

Un fişier update.zip este reprezentat în general de 2 directoare arhivate şi o să vorbim mai jos despre ele. Ce trebuie ţinut minte este faptul că nu este suficient să le arhivăm prin metoda clasică (cu winzip, winrar, 7z …), ci trebuie să le ataşăm şi o semnătură digitală. În mod normal este nevoie de semnături oficiale pentru aplicarea fişierelor update.zip din stock recovery şi asta e cam greu de obţinut, însă din fericire pentru noi au fost create module custom recovery care ne permit să folosim semnături digitale de test pe care le putem crea foarte simplu.

Pasul 1. Crearea unei semnături digitale de test

În acest pas o să vedem cum putem crea o semnătură digitală. Nu o să intru în detalii să nu lungesc acest articol mai mult decât este necesar, aşa că o să trect direct la partea practică. Pentru început trebuie să descărcăm aplicaţia openssl, pe care o vom folosi pentru generarea unei semnături de test. De aici poate fi descărcată versiunea pentru windows.

Eu am folosit pentru acest articol openssl-0.9.8k_WIN32.zip (de aici puteţi descărca versiunea folosită de mine) şi am extras conţinutul arhivei într-un director numit openssl, pe care l-am pus în rădăcina partiţiei C:. Se deschide apoi command prompt-ul în acel director şi se navighează în directorul bin (Ex: C:\openssl\bin).

Scurtătură: Pentru Windows 7 se poate deschide folderul cu Windwos Explorer apoi se tastează in bara de adresă cmd și se apasă ENTER.

Se introduc pe rând comenzile de mai jos. Introduceţi ce detalii vreţi voi, nu trebuie să puneţi aceleaşi informaţii ca cele puse de mine în imaginea de mai sus.

openssl genrsa -out mykey.pem 1024
openssl req -new -key mykey.pem -out myrequest.pem
openssl x509 -req -days 9999 -in myrequest.pem -signkey mykey.pem -out mycert.pem
openssl pkcs8 -topk8 -outform DER -in mykey.pem -inform PEM -out mykey.pk8 -nocrypt

Pasul 2. Selectarea fişierelor şi crearea directoarelor

În acest pas vom descărca actualizarea font-urilor Droid cu suport pentru diacritice(link). Mai multe detalii pot fi găsite pe pagina proiectului. Aşa cum spuneam la începutul articolului în general fişierele update.zip conţin 2 directoare: unul care conţine fişierele/aplicaţiile pe care vrem să le instalăm şi unul care conţine script-ul de instalare.

Să trecem la practică:

  1. În rădăcina partiţiei C: se crează un nou director: update_fonts (puteţi să-i puneţi ce nume doriţi, însă nu lăsaţi spaţii în nume).
  2. În interiorul acestui director vom crea unul nou în care vom pune script-ul ce va instala fişierele/aplicaţiile.
    • Se crează unul nou: META-INF. În interiorul acestui director se crează unul nou: com. Un nou director va fi creat în acest director cu numele: google, iar în interiorul acestuia vom crea ultimul director necesar: android .
    • până acum ar fi trebuit să obţinem următoarea structură de directoare: C:\update_fonts\META-INF\com\google\android
    • În continuare se descarcă următoarea arhivă: link, ce conţine un fişier gol cu numele updater-script (în acest fişier vom pune comenzile pentru instalare) şi un fişier update-binary (un fel de executabil). Extragem cele două fişiere din arhiva proaspăt descărcată în directorul android mai sus creat.
  3. Revenim în directorul nostrum de lucru (update_fonts) şi construim structura directoarelor în funcţie de ce vrem să instalăm.
  4. În acest articol mi-am propus să instalez noile fonturi. Font-urile sunt stocate în partiţia system, directorul fonts, aşa că le vom crea. Dacă de exemplu dorim să instalăm şi anumite aplicaţii putem şă adaugăm în directorul system şi directorul app pe lângă cel creat deja (fonts).

    Pentru a descoperi directoarele în care trebuie să ajungă fişierele/aplicaţiile şi permisiunile necesare puteţi folosi un explorer ce suportă citirea partiţiilor de system pe Android (RootExplorer -pe bani- sau SuperManager -gratuit-).

  5. după ce le creăm obtinem următoarea structură de directoare: C:\update_fonts\system\fonts .
  6. În acest director (fonts) vom copia din arhiva cu font-uri descărcate mai sus toate fonturile ce au în denumire cuvântul Droid, deşi doar 9 dintre ele au fost actualizate (a se vedea în pagina proiectului).

Pasul 3. Crearea script-ului de instalare

Deschidem cu un editor de text (notepad sau notepad++) fişierul updater-script, in care punem următoarele linii:

ui_print("Install updated Droid fonts");
show_progress(0.1, 10);
ui_print("Mount system partition...");
#mount("MTD", "system", "/system");
mount("ext3", "EMMC", "/dev/block/mmcblk1p21", "/system");
ui_print("Copy files...");
#package_extract_file("system/fonts/DroidSans.ttf", "/system/fonts/DroidSans.ttf");
package_extract_dir("system", "/system");
ui_print("Set permission...");
#set_perm(0, 0, 0644, "/system/fonts/DroidSans.ttf");
set_perm_recursive(0, 0, 0755, 0644, "/system/fonts");
ui_print("Unmount system partition...");
unmount("/system");
ui_print("Installation completed!");

Aceste linii de comandă funcționează atât pe CWM2.x, cât și pe CWM3.x (edify este noua formă de scripting acceptată de modulele custom recovery fără de care nu funcționează instalarea în CWM3.x; în CWM2.x sunt acceptate și script-urile amend). Să vedem pe scurt ce face fiecare comandă (mai multe detalii găsiţi pe google, un exemplu):

  • ui_print – afişează mesaj
  • show_progress – afişează bara cu progresul instalării (utilă dacă sunt multe operaţii de făcut)
  • mount – încarcă şi face accesibilă o partiţie. Este recomandat să fie specificată calea completă pentru respectiva partiţie (ex: pentru partiţia de system pentru Defy este /dev/block/mmcblk1p21), însă în cazul în care nu este cunoscută intreaga cale către partiţia respectiva, sa zicem partiţia system, atunci comanda se poate înlocui cu mount(“MTD”, “system”, “/system”); (ex: pentru partiţia data : mount(“MTD”, “data”, “/data”);). Dezavantajul va fi că nu se pot instala mai multe fişiere update.zip în aceeaşi sesiune (după instalare trebuie restart smartphone-ul şi să trebuie să se intre din nou în custom recovery). Nu ştiu dacă mai sunt şi alte efecte secundare, însă asta este ceea ce am observat eu pe Defy.
  • package_extract_dir – copiază fişierele din directorul sursă în destinaţie
  • set_perm – setează drepturile de access la un fişier anume.
  • set_perm_recursive – setează drepturile de access la director şi continut recursiv.
  • delete – sterge un fișier anume (ex: delete(“/system/etc/gps.conf”); )
  • # – inactivează toate comenzile care îl precedă (se aplică doar la linia curentă); este util pentru a pune comentarii în cazul în care script-ul este foarte complex

Notă: nu lăsaţi linii goale la sfârşitul script-ului pentru ca vor genera erori.

Pasul 4. Crearea şi semnarea fişierului update.zip

Partea cea mai grea a trecut. Acum tot ce mai avem de făcut e să arhivăm conţinutul directorului update_fonts. Atenție să arhivați conținutul directorului update_fonts, nu și directorul acesta. Va rezulta o arhivă ce conține directoarele META-INF și system. Ne asigurăm că numele arhivei este update_fonts.zip. A mai rămas să semnăm acest fișier și apoi putem să-l instalăm din CWM.

Pentru instalare avem nevoie de o aplicație java: Signapk.jar, pe care o puteți descărca de aici. Extragem conținutul acestei arhive în rădăcina partiției C:. Va rezulta un director signapk. În acest director o să copiem semnătura digitală creată la primul pas. Pentru asta navigăm în directorul C:\openssl\bin și copiem de aici (în directorul signapk) fișierele: mykey.pk8 și mycert.pem. Ca bonus am inclus cetificatul obținut în acest tutorial, astfel încât să-l puteți folosi dacă nu vreți să treceți și prin pasul 1 sau dacă ceva nu a funcționat cum trebuie.

Notă: pentru a folosi aplicația signapk.jar este necesar să aveți instalat Java SE (Standard Edition) – JRE (Java Runtime Environment) / link alternativ.

Ca să semnăm aplicația deschidem command prompt-ul în directorul signapk și executăm următoarea comandă:

java -Xmx999m -jar signapk.jar -w mycert.pem mykey.pk8 C:\update_fonts\update_fonts.zip C:\update_fonts\update_fonts-signed.zip

Dacă totul merge bine nu ar trebui să apară nici un mesaj de eroare pe ecran. Acum tot ce mai trebuie făcut e să copiem pe card fișierul update_fonts-signed.zip (link download fișier obținut în acest tutorial) și să-l instalăm din CWM.

Asta e tot. Acum ar trebui să vă descurcați să faceți propriile fișiere update.zip. Îmi cer scuze față de cei care stiu chestiunile de bază, dacă i-am plictisit cu detaliile, însă am vrut să pun un tutorial cât mai complet, astfel încât să poată fi folosit de majoritatea utilizatorilor.

9 Comentarii
  1. Azumix

    Multumesc foarte mult petru tutorial….astept cu nerabdare sa ajung akasa sa incerc si eu…sa vad insa cum il traduc pe linux….ms mult o z buna!!!

  2. nepotu

    Pai cel mai probabil openssl si java sunt deja instalate, iar in cazul in care nu sunt se poate face usor cu un apt-get daca esti pe debian/ubuntu sau cu yum pe redhat/centos/fedora. O sa mai difere doar calea catre directoare si fisiere, unde o sa inlcuiesti c: cu /mount_point/ (locul in care ai tu partitia mounted).

    O zi placuta si tie!

  3. Emanuel

    Salut nepotule!
    Felicitari pt blog si ajutorul care ni-l dai in ale androidului!
    Felicitari si pt frumoasele poze si pareri din drumetiile tale! La mai multe :)
    Acum sa te rog si ceva ca doar nu te-am laudat degeaba :D
    Glumesc!
    Am vazut ca te pricepi si am inteles ca ai mai ajutat si pe altii in legatura cu diacriticele corecte din android in ce priveste limba romana in aplicatii, meniu si browserul web. ai putea face un instal.zip cu asa ceva care sa-l putem instala de pe crd dupa fiecare Nightly? ma refer la CM 7, evident. Stiu ca trebuie copiate niste fonturi si puse niste permisii la ele undeva in system. E nasol tare sa faci asta manual in fiecare zi daca testezi fiecare Nihtly…
    Daca permiti pun si un link cu fonturile de pe softpedia.
    Ai fi de mare ajutor pt noi daca ai putea sa faci asta :)
    Mersi frumos pt tot ce faci!

  4. nepotu

    Emanuel, daca te uiti cu atentie ai mai sus un link de download al fisierului .zip obtinut in acest tutorial. Acel fisier contine exact fonturile actualizate.

    PS: iti multumesc pentru cuvintele de mai sus si da poti pune linistit link-ul pe SP, dar sa nu il pui azi (maine ar trebui sa fie ok) pentru ca o sa actualizez link-urile catre fisierele de pe google docs si nu o sa mai functioneze.

  5. Emanuel

    Nepoate esti the best!
    Jos palaria in fata ta!
    sper sa nu abandonezi acest blog si daca iti schimbi telefonul sa mai oferi consultanta in ale androidului si pe viitor :)
    Am instalat fonturile si totul e ok:)
    le-am luat si le-am urcat si in alta parte si le-am pus celor de pe softpedia la dispozitie cu multumiri catre tine. Le-am pus in alta parte ca de la tine trebuia logare ca sa fie descarcate si parea mai complicat…
    Tine-o tot asa si la cat mai multe drumetii :)
    Macar mai prindem cate o idee despre ce mai putem vizita si noi :)
    Bafta!

  6. nepotu

    Interesanta faza asta cu autentificarea. Ideea e ca eu am incercat si fara sa fiu logat pe google si mi-a mers. Ideea e ca toate sunt puse publice (fara autentificare) si am incercat de pe mai multe calculatoare si au mers fara probleme.

    O sa incerc sa actualizez toate link-urile cu unele directe. Iti multumesc pentru observatie, te-as ruga daca ai putea sa accesezi link-ul cu fisiere si sa imi faci un printsreen (ca sa vad ce apare) si sa mi-l trimiti pe mail: geo at nepotu punct ro.

    Weekend placut … sau ce a mai ramas din el.

  7. Azumix

    Nepoate…la pasul 2 linkul nu merge daca il poti pune iar?Incercam sa imi fac un update.zip cu aplicatii necesare dupa fiecare instalare”curata” sper sa iasa.
    Ps:Banuiesc ca cunostintele mele sunt catre 0 cand vine vorba de fisierele astea dar dece nu a facut nimeni o aplicatie care sa simplifice putin procesul?(pentru cei ca mine)

  8. nepotu

    Azumix, vad ca au schimbat cei de la google paginile. Poti descarca update_fonts-signed.zip de la sfarsitul articolului si sa copiezi din arhiva fonturile. Parca vazusem si pe XDA (portal nu forum) ceva aplicatii care sa ajute la crearea de fisiere update.zip, insa eu unul prefer metoda clasica. ;)

  9. Azumix

    Acum am cautat si eu pe xda si am gasit ceva dar e prea lung si cred ca o las pe maine.Mersi de raspunsul prompt.

Ai ceva de zis?

Ce ai de zis:
XHTML: Sunt permise urmatoarele tag-uri HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">