Tutorial przedstawia w jaki sposób edytować pliki systemowe w naszych telefonach. W tym poście nie znajdziecie jakie zmiany należy wykonać w jakim pliku, aby uzyskać jakiś efekt, choć oczywiście możemy i powinniśmy o tym dyskutować w wątku. Ten post pokazuje tylko i wyłacznie edycje plików od strony technicznej.
Nigdy tego nie sprawdzałem, ale zakladam, że należy mieć ROM deodexowany. Zawsze taki miałem i zawsze polecam deodexa, jesli chcemy modyfikować system. Do dzieła.
Na poczatek musimy skompletować nieco potrzebnych narzędzi:
1. Pobieralnia:
1. Oprogramowanie Java dla systemu Windows. Bez tego NIC nie da sie zrobić:
Pobieranie oprogramowania Java dla systemu Windows
2. Oprogramowanie do dekomplilacji, kompilacji plików *.apk. Tu mamy wiekszy wybór, mnie jednak przypadł do gustu pakiet APK Manager Wanam ( wanamlite.com ). Do ściągnięcia bezpośrednio tutaj:
APKManagerWanam.zip
3. Baksmali/Smali do dekompilacji, kompilacji plików *.jar. Najnowsze stabilne wersje na dzien dzisiejszy to 1.4.2:
https://code.google.com/p/smali/downloads/list
4. Program ułatwiający edycję plików *xml. Dowolny, ale chyba najwygodniejszym jest Notepad++:
Notepad++ Home
2. Krótki opis APKManagera:
Po zainstalowaniu Javy rozpakowujemy archiwum APKManagera. W folderze znajdują się następujące foldery i pliki:
"other" - tu znajdują się narzędzia
"place-apk-here-for-modding" - tu umieszczamy pliki *.apk, które bedziemy modyfikować
"place-apk-here-for-signing"
"place-apk-here-to-batch-optimize"
"place-ogg-here"
"projects" - tu znajdzie się zdekompilowana zawartość plików
"Script.bat" - skrypt uruchamiajacy
3. Dekompilacja:
Pierwsza rzeczą, jaką musimy zrobić, jest skopiowanie pliku framework-res.apk do folderu "others" (wszelkie systemowe pliki najprosciej znaleźć w paczce Deodex z naszym ROMem) i z poziomu konsoli Windows wykonanie następującego polecenia:
apktool if framework-res.apk
Potem przykładowy plik, np. SecSettings.apk umieszczamy w folderze "place-apk-here-for-modding" i uruchamiamy Script.bat.
1. Jeśli w "place-apk-here-for-modding" mamy więcej niż jeden plik, to najpierw musimy wybrać ten, nad którym chcemy pracować - 22 [ENTER]. Jeśli plik mamy jeden, to przechodzimy do punktu 2.
2. Dekompilujemy plik - 9 [ENTER]. Operacja potrwa mniej niż minutkę.
3. W folderze "projects" znajdziemy podfolder "SecSettings.apk', a w nim zdekompilowaną zawartość naszego pliku.
4. Skrypt pozostawiamy w tle.
4. Edycja:
Możemy przystapić do edycji pliku. Jesteśmy zainteresowani plikami w folderze "res" (*.xml lub pliki graficzne *.png), czasem w folderze "smali" (pliki *.smali).
W konkretnym przykładzie chcemy uzyskać tzw. białe ustawienia i w zwiazku z tym musimy zmodyfikować plik \res\values\styles.xml. Edytujemy go za pomocą Notepad++ i po naniesieniu zmian zapisujemy. Po tym możemy juz przejść do kompilacji zmodyfikowanej aplikacji.
5. Kompilacja:
Wracamy do uruchomionego w tle skryptu:
1. Wybieramy 11 [ENTER] - kompilacja.
2. Po chwili na dole okna zobaczymy komunikat:
"Is this a system apk (y/n)" - ponieważ aplikacja SecSettings.apk jest aplkacja systemową, wybieramy Y [ENTER].
3. Po tym następny komunikat i znowu wybieramy Y [ENTER].
4. Teraz BARDZO WAŻNA rzecz. Zanim nacisniemy dowolny klawisz i dokończymy proces kompilacji musimy przejść do folderu "APKManagerWanam" i potem do tymczasowo utworzonego podfolderu "keep". Tam odnajdujemy plik "resources.arsc" (jesli modyfikowaliśmy pliki *.xml lub *.png) lub "classes.dex" (jeśli modyfikowaliśmy plik *.smali) i USUWAMY GO!
5. Wracamy do skryptu i naciskamy dowolny klawisz. Po chwili dekompilacja zostanie zakończona.
6. Gotowy, zmodyfikowany plik odnajdziemy w folderze "place-apk-here-for-modding". Posiada on w nazwie przedrostek "unsigned", czli "niepodpisany". Jako, ze jest to aplikacja systemowa, to nie musimy jej podpisywać. Wystarczy przenieść ja w inne miejsce, usunąć przedrostek z nazwy i można skopiować do telefonu zamieniając oryginalny plik i nadając uprawnienia rw-r--r--.
6. Edycja plków *.jar:
Pliki smali.jar i baksmali.jar umieszczamy w dowolnym folderze, np. C:\Smali\. Tam też umieszczamy plik do edycji, np. android.policy.jar. Przechodzimy do wiersza poleceń Windows (cmd.exe) i ustawiamy bieżący folder na C:\Smali\.
1. Dekompilacja:
java -Xmx512m -jar baksmali.jar android.policy.jar
Wynikiem tego polecenia będzię podfolder "out" z zawartością android.policy.jar. Te pliki mozemy juz edytować.
2. Kompilacja:
java -Xmx512m -jar smali.jar out -o classes.dex
Wynikiem tego polecenia będzie utworzenie pliku "classes.dex". Plik ten nalezy przenieść do pliku android.policy.jar.
Uwagi końcowe:
1. Jeśli uważasz, że coś jest niejasne, którys link nie działa albo znalazłeś błąd - pisz PW, postaram się jak najszybciej to poprawić.
2. Nie biorę odpowiedzialności za ewentualne problemy wynikłe z przeprowadzanych modyfikacji.
3. Post nie wyczerpuje wszystkich problemów, ale wróce do niego, jesli będzie zainteresowanie.