Wymagania:
Nowy "Themer" powinien mieć styczność z pisaniem aplikacji. Android korzysta z technologi XML która pomimo tego że zawiera składnie angielskie jest dosyć trudna do ogarnięcia. "Wygląd" Androida jest również w pliku xml podobnie jak w pliku Layout'u aplikacji - dlatego dobrze było by gdybyś się zapoznał z tym.
Narzędzia:
Edytor tekstowy (polecam Notepad++), edytor graficzny (zaawansowany np Gimp albo Photoshop) , aczkolwiek najważniejszą rzeczą jest narzędzie APKTOOL które jest dostępne zarówno na Windows'a , Linuxa i Mac'a. Do pobrania.
https://code.google.com/p/android-apktool/downloads/listPotrzebujemy główny plik z Apktool (apktool1.5.2.tar.bz2) i plik konkretny dla naszego systemu.
w folderze apktool do poprawnego działania musimy mieć 3 plik - apktool.jar , aapt i apktool. Pierwszy to "jądro" apktool , pozostałe służą do jego "obsługi".
Składnie możemy zobaczyć po wpisaniu w wiersz poleceń apktool
Apktool v1.5.2 - a tool for reengineering Android apk files Copyright 2010 Ryszard Wiśniewskiwith smali v1.4.1, and baksmali v1.4.1 Updated by @iBotPeaches Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) Usage: apktool [-q|--quiet OR -v|--verbose] COMMAND [...] COMMANDs are: d[ecode] [OPTS] [ ] Decode to . OPTS: -s, --no-src Do not decode sources. -r, --no-res Do not decode resources. -d, --debug Decode in debug mode. Check project page for more info. -b, --no-debug-info Baksmali -- don't write out debug info (.local, .param, .line, etc.) -f, --force Force delete destination directory. -t , --frame-tag Try to use framework files tagged by . --frame-path Use the specified directory for framework files --keep-broken-res Use if there was an error and some resources were dropped, e.g.: "Invalid config flags detected. Dropping resources", but you want to decode them anyway, even with errors. You will have to fix them manually before building. b[uild] [OPTS] [ ] [ ] Build an apk from already decoded application located in . It will automatically detect, whether files was changed and perform needed steps only. If you omit then current directory will be used. If you omit then /dist/ will be used. OPTS: -f, --force-all Skip changes detection and build all files. -d, --debug Build in debug mode. Check project page for more info. -a, --aapt Loads aapt from specified location. if|install-framework [ ] --frame-path [ ] Install framework file to your system. For additional info, see: http://code.google.com/p/android-apktool/ For smali/baksmali info, see: http://code.google.com/p/smali/
Teraz wypadało by coś zrobić :D
Dzięki temu narzędziu będziemy mogli zmienić layout i działanie prawie że każdej aplikacji (w miare naszych umiejętności) ale wcześniej musimy "przygotować" go do obsługi. Potrzebne nam do tego będzie plik framework-res.apk z naszego telefonu.
Na dzień dobry instalujemy naszego frameworka.
> apktool if framework-res.apkgdy zobaczymy komunikat że został poprawnie zainstalowany bierzemy się za dekompilacje apki do zmiany - nawet do dekompilacji naszego frameworka.
> apktool d framework-res.apkW ten sposób utworzy się nam nowy folder w którym będziemy mieli pliki graficzne , xml layout'ów i zmiennych oraz pliki wykonawcze w formacie SMALI. Jego rozumienie jest dosyć "trudne".
SMALI (po mojemu) to format zdekompresowanych plików wykonawczych androida , które "rozumie" wirtualna maszyna Androida (Dalvik), nie ma w nim pętli (co może na pierwszy rzut oka przerazić programistę który jest do nich przyzwyczajony).
Do Samego Themingu nie będziemy potrzebowali zmian w tych plikach. Wystarczą nam pliki graficzne (o których wspomniałem w Proste Modyfikacje ) oraz pliki XML , które już teraz są dla nas zrozumiałe.
Gdy już skończymy modyfikować , musimy "zbudować" aplikacje.
> apktool b nazwa_folderu_naszej_aplikacji nowa_nazwa_aplikacjiw przypadku Frameworka będzie to
> apktool b framework-res new_framework.apkplik new_framework.apk to nasz skompilowany plik. Teraz rzecz "najważniejsza". Ze źródłowej aplikacji (tutaj - > framework-res.apk) musimy skopiować folder META-INF do nowej aplikacji (tutal -> new_framework.apk) gdyż nasza nowa aplikacja nie ma certyfikatów przez co android nie załaduje jej.
Po skopiowaniu wrzucamy nową aplikacje na telefon i podmieniamy ją ze starą.
Mam nadzieję że w najbliższym czasie będę miał narzędzia do sprawdzenia kilku modyfikacji i publikowania ich na blogu. Thening to naprawdę fajna zabawa która pozwala odpicować Androida według upodobań.
Miłej zabawy! ;)