APK fájlok módosítása, egyedi témák készítéseItt egy kis segítség azoknak akik belevágnának sajátos kinézetű témák elkészítésébe különböző ROM-oknál. Csak az alapokat írom le, de az elinduláshoz ez bőven elég lesz. Ezzel az eljárással nem csak a ROM-hoz tartozó témát tudjátok változtatni, hanem majdnem mindent, ugyanis szétszedjük darabokra az apk fájlokat.
Mindenki csak saját felelősségére vágjon bele!Tisztázzunk néhány fogalmat:
Azon eljárást, amelynek keretében a tárgykódból különféle, a továbblépéshez szükséges információkat nyernek, reverse engineeringnek nevezzük. Ennek egyik eszköze a dekompiláció, ami a tárgykódnak egy visszafordítóprogram segítségével forráskódba visszafordítását jelenti.Na mi ezt a dekompilációt fogjuk használni, ugyanis dekompilálnunk kell az apk fájlokat, hogy azt olvashatóvá tegyük számunkra. Ezután már tudjuk formázni és ha végeztünk rekompiláljuk, visszadobjuk a ROM-ba és készen vagyunk.
Ehhez a folyamathoz szükség lesz az
apktool-ra:
You are not allowed to view links.
Register or
LoginCsomagoljátok ki, a mappában 6 fájlnak kell lennie, ez jelenleg a legfrissebb verzió, de ha jön ki újabb, azt innen tudjátok majd leszedni:
You are not allowed to view links.
Register or
LoginEgy másik fontos dolog ami mindenképp kellene fog, ha még nincs a gépen:
You are not allowed to view links.
Register or
LoginHa fent is van a gépen, a következőt csináljátok meg, mert másképpen ezt a hibaüzit fogod kapni később:
...'java' is not recognized as an internal or external command... (sry, de angol a win7em)
Control Panel -> System and Security -> System -> (bal oldalt) Advanced system settingsMajd ami bejön ablak, alul ->
Environment Variables, majd alul keresd ki azt, hogy
PathMenj rá az Edit-re és az alsó sorban fel lesznek sorolva elérési utak, a végére írj egy ";" jelet és írd be a pontos elérési útját a javadnak. Nekem pl ez:
C:Program Files (x86)Javajre7binHa kész Okézz le mindent és ezzel megvagy.
Következő lépés, hogy keress egy ROM-ot, én pl ezzel csinálom:
Slim-I9000-4.2.1.RC.1-OFFICIALNyiss egy total commandert, egyik oldalon legyen a ROM, másikon az APKtool mappa
(Mindenképp a total commandert ajánlanám, az hiba nélkül szedik ki és rakja vissza a fájlokat zip-ekbe)
ROM-on belül:
System -> App -> SystemUI.apk (kezdjük ezzel, de ez később lehet a Settings.apk is vagy Contact.apk, akármi)System -> framework -> framework-res.apkSystem -> framework -> twframework-res.apk !! ha van akkor ezt is !!A framework fájlra (fájlokra, romtól függ, hogy 2 van-e) mindenképp szükség van a decompile-hoz.
Ha kimásoltad a ROM-ból a fájlokat, nyisd meg a mappát úgy önmagában az asztalról, vagy ahova raktad és tartsd lenyomva a CTRL+SHIFT billentyűket, majd jobb klikk - >
Open command window here(a CTRL+SHIFT-re azért van szükség, ha alapból nem a C gyökérkönyvtárba van a mappád, mert így a cmd csak is abban a mappában fog dolgozni, ahol megnyitottad)
Először betöltjük a framework fájlokat, hogy a decomplie jó legyen. Írjuk be a következő sort cmd-be:
apktool if framework-res.apk Ezután nyomj entert, ha minden jól megy azt fogja írni, hogy Framework installed.
Ha van twframework-res.apk-d, azzal is ugyanezt tedd meg:
apktool if twframework-res.apk Majd jöhet a systemui:
apktool if systemui.apk Ezeket a user mappádon belül az apktool mappába telepíti, azzal nem kell foglalkoznod.
Most pedig jöhet a
decomplie:
apktool d systemui.apk ./systemuiA végén lévő
./systemui csak annyit jelöl, hogy abba a mappába tegye a fájlokat, bárminek elnevezheted a mappád, lehet akár "./gesztenye" is
Nyomd meg az entert és ha végzett újra megjelenik a sor ahova írhatsz, de már nem fogsz, mert bezárhatod a cmd-t.
Amilyen mappa nevet megadtál, ott megjelentek a systemui.apk-ban lévő fájlok. Leginkább a "
res" mappa fog kelleni nekünk, a többihez nem is érdemes nyúlni. A res-en belül a drawable mappák érdekesek számunkra és talán a layout, de még én sem kísérleteztem ki teljesen. A lényeg, hogyha idáig eljutsz már látni fogod mivan
Ha végeztél a módosítgatásokkal, akkor vissza kell rakni az apk fájlt eredeti formájába, tehát a
recompile következik:
APKtools mappájában ismét CTRL+SHIFT+jobbklikk -> Open command window here, majd írd be a következőt:
apktool b -f -d gesztenye(a gesztenye helyére értelemszerűen a mappa neve menjen, amit előzőleg írtál, tehát amiben van az apk fájlod szétszedve..)
Ha megvan, bezárhatod a cmd-t és nyisd meg a gesztenye mappát, látni fogsz egy build és egy dist almappát.
A build mappát most hagyjuk figyelmen kívül, nyissuk meg a dist mappát.
Itt lesz a rekompilált apk fájlunk:
systemui.apk , nevezzük át, arra ami volt:
SystemUI.apkNyissuk meg a total commandert és azon belül ezt az új SystemUI.apk-t
Másik oldalon pedig az eredeti SystemUI.apk-t amit keszedtünk a ROM-ból.
Látni fogjuk, hogy az újban nincs META-INF mappa, ezt könnyen korrigáljuk:
Átmásoljuk a
META-INF és
AndroidManifest.xml fájlokat az új SystemUI.apk-ba. Ezek a fájlok tulajdonképpen csak megjelölik az aktuális apk-t, de szükségünk van rájuk. (AndroidManifest-et felül kell írni)
Ha kész van, mehet is vissza az eredeti helyére a SystemUI.apk és akár flashelheted is.
Kis google kutakodás után okosabbak is lehettek, ezek csak az alapok, pl a build mappa is hasznos tud lenni kisebb módosítgatásoknál..
Remélem segítettem!
A könnyebb érthetőség érdekekében készítettem egy videót is: