2024. április 19., péntek

Gyorskeresés

Android alkalmazás (apk) szerkesztő leírás kezdőknek

Írta: | Kulcsszavak: Android . Apk . Apktool . Szerkesztés

[ ÚJ BEJEGYZÉS ]

Sziasztok. Pár hete megosztottam 1-2 kisebb honosításomat az "Android Magyarország" facebook csoportban, kisebb-nagyobb sikerrel, de nem is ez a lényeg, hanem hogy páran megkérdezték, hogy hogyan lehet módosítani/magyarítani az apk fájlokat, mert ők is szeretnének ilyet csinálni/kipróbálni. És teljesen jogos a kérdésük/óhajuk, mert a mi szép nyelvünkön alig található ezzel kapcsolatos leírás/cikk. Természetesen angolul se szeri, se száma az ilyesfajta blogoknak. Ezért gondoltam, hogy összedobok nekik pár sort, egy "noob friendly" leírást, lépésről lépesre az elejétől fogva. Persze szigorúan megmaradva a kezdő szintnél, hiszen én magamat sem tartom profinak vagy haladónak, talán egy erős kezdő szintjén állok.

Hosszas gondolkozás után, úgy döntöttem, hogy nem a megígért módszert ismertetem meg velük, a különböző windows-os kötegelt batch fáljok és alkalmazások használatát, hiszen az elvenné a munkafolyamat lényegét/izgalmát. Mint ahogy az automata váltós autó elveszi kicsit a vezetés élményét. Ezekből amúgy nagyon sok van: Apk studio, Android studio 3.0 beta 6, Eclipse, és még sorolhatnám. Ezek is nagyon jók, komolyabb programozóknak. Inkább amit/ahogy tanultam PH-s kollégáimtól, Keeperv85-től és RootRulez-től, a windows-os parancs-soros megoldást ismertetném. Magyarításra/moddingolásra tökéletes. Androidos telefonra is van már számos alkalmazás/lehetőség erre. Az elején persze én is ezeket használtam. A legelső próbálkozásomat ezzel a programmal, kb. 4 éve: APK Utility 1.5, magyar fejlesztésű, gabika318 műve. És mivel nem voltam még semennyire tapasztalt, és nem ismertem az íratlan szabályokat sem, ezért mindjárt az elején több órányi gépelésem és fordításom ment a levesbe. Nemsokára írom, hogy ez miért volt.

Na de csapjunk is bele a lecsóba, amire szükséged lesz a magyarításhoz/szerkesztéshez:

0: A legjobb egy linux-os pc, hiszen az Android egy linux kernelt használó mobil operációs rendszer, amire a fejlesztők java nyelven írhatnak rá menedzselt kódot, nagyon röviden megfogalmazva. (amíg én sokszor kínlódtam az alkalmazások módosításával/összecsomagolásával windows-on, addig ugyanazt például Keeperv85 pillanatok alatt megcsinálta linuxon)
1: De mivel egy Windows orientált világban élünk, ezért egy Windows-os pc is megteszi. Ezt a módszert fogom most ismertetni.
2: Java for Windows
3: Java SDK, JRE
4: Android SDK - Ez most nem feltétlenül kell majd, csak ha van rá időd és helyed a telepítésre, több gigabájt is lehet.
5: Egy jó kódszerkesztő program: Notepad++ v6.6.6. Rengeteg plugin van hozzá, a helyesírás ellenőrzéstől kezdve a fájlok összehasonlításáig szinte minden. Bár van már újabb verzió is, én a 6.6.6-os verziót használom, mert a későbbiekben a helyesírás rosszalkodott. Hivatalos weboldal: [link]
6: Friss Apktool.jar. Jelenlegi verzió: 2.3.0
7: És a következőkre, ezeket neked már nem kell megkeresni, megcsináltam helyetted:
◦ framework-res.apk -> Nexus, Android 8.0-ból
◦ aapt.exe -> Android SDK-ból
◦ smali.jar 2.2.1
◦ baksmali.jar 2.2.1
◦ singapk.jar + testkey.x509.pem + testkey.pk8 -> ezzel fogjuk "szingnózni" az elkészült apk fájlokat.: letöltés
8: A forráskódban való kereséshez elengedhetetlen egy jó szó/kifejezés kereső egy fájlon belül. Erre tökéletes a Total Commander például.
9: Ez sem árt, ha fel van telepítve: Microsoft .NET-keretrendszer 4.6.2 (offline telepítő)
10: Ez lesz a teszt/próba alkalmazásunk: Apk_Save_v1.5.apk

Fontos tudnivalók:

● Fizetős alkalmazásokat nem magyarítunk, csak a fejlesztő engedélyével/feltételeivel, de utána sem osztjuk meg őket. Ingyenes alkalmazásokat magyarítunk.
● Alapszintű angol tudás is szükséges. Akik esetleg hosszú évek óta "nyomják a számítógépet", azoknak ez nem lesz gond. Bár a google fordító sokat segíthet ebben, a logika, a nyelvtani ismeretek elég fontosak.
● Miközben a szerkeszted a magyarítást, közben a telefonon vagy egy android emulátoron nézd az eredeti alkalmazást, hogy az adott szó/mondat kifér e az adott helyre, és illik e a szövegkörnyezetbe.
● Az apk kicsomagolása után egyből csináljunk egy becsomagolást. Mert ha nem sikerül a becsomagolás, akkor feleslegesen fordítottunk sok mondatot, és időt vesztettünk csak, ahogy feljebb is írtam az első fordításom kapcsán.
● Egy "rendes" fordítás magázó módban készül, példa: "Kérem, kattintson a tovább gombra a folytatáshoz." A mai világban ez már nem sokat számít, ahogy észrevettem. Úgy készíted, ahogy akarod, csak kulturált beszéd legyen. Példa: "Kérlek, kattints a tovább gombra a folytatáshoz".
● Ha színeket, ikonokat vagy képeket is akarsz szerkeszteni/módosítani, akkor elengedhetetlen a Adobe Photoshop/Fireworks ismerete is. Vagy egy olyan másik programé, ami jól kezeli a png és jpg fájlokat.
● Miután módosítottunk egy apk-t, akár csak egy ikont benne vagy egy szót, a Google Play áruház külső forrásként fogja látni, így többet nem jön rá frissítés. Ilyenkor mindig magunknak kézzel kell frissíteni, majd újra módosítani az apk-t az igényeink szerint. Lejjebb erről lesz egy példa a Facebook Lite kapcsán.
● Nem mindegyik alkalmazást lehet magyarítani / kicsomagolni vagy összecsomagolni. Van amelyiket szét lehet szedni, de össze már nem. Vagy össze lehet rakni, de pl nem indul el. Mondok egy számot, kb 10-ből 9-et lehet módosítani, de ez az alkalmazástól függ. Vannak védett alkalmazások például, vagy google térképet használó alkalmazások (fittness, túra, biciklis, navi, stb), ezeket ha módosítod akkor a program működni fog, de például nem lesz térkép, csak egy üres folt. Ennél a hibakód például ez: a Google Térképre hitelesített szignó kell, tehát náluk bejegyzett fejlesztőnek kell lenni a digitális aláírásoddal, másképp letilt a Google szerver.
● Ha a szerkeszteni való apk nincs a helyén a mi mappánkban, jelen esetben az Androidtool-ban, vagy a neve eltérő mint amit beírtunk, vagy ha nem összefüggő/folyamatos a neve, akkor nem fogjuk tudni kicsomagolni.

● Ha csak képeket vagy ikonokat szeretnél kicserélni az apk fájlban, akkor ahhoz például elég az is, ha "raw" módban szerkeszted a fájlt. Egyszerűen átnevezed az apk kiterjesztést zip-re, és voálá, meg is tudtad nyitni. Természetesen ilyenkor maga a forráskód láthatatlan marad, és nem kerül kitömörítésre.

● Ha hivatalos magyarításra vágysz egy alkalmazás kapcsán, és ebben gondolkozol tovább, a fejlesztő el fog neked küldeni több fájlt is, akár 4-5-öt. Mi itt alapesetben csak egy vagy kettő xml nyelvi fájlt fogunk módosítani vagy hozzáadni (strings.xml / arrays.xml). De ami nem található az xml nyelvi fájlokban, az a forráskódban van. Ez nem is baj, ha csak a magunk vagy barátaink részére készítjük a magyarítást. De ha azt akarjuk, hogy megjelenjen a Play áruházban is, na akkor kell a fejlesztő által küldött összes elemet magyarítani, amit ő pl android stúdióval (vagy amivel épp programoz) beleintegrál az alkalmazásba. Ha ez egy kicsit sok vagy nem érthető volt, ne aggódj, később megérted :).

Példa erre, amit a fejlesztő küldött hivatalos lokalizált fordításra:

És amit mi fogunk szerkeszteni saját magunknak csak úgy, plusz esetleg még a forráskódban lévő szavak, amik itt nem találhatóak meg.

Ha ez egy kicsit sok vagy nem érthető volt, ne aggódj, később megérted :).

Első lépések:

1: Feltelepíted a 2- és 3-as pontban lévőket.
2: A Total Commander-t és a Notepad++-t is feltelepíted.
3: A 7-es pontban lévőt letöltöd, majd kitömöríted például egy Androidtool nevű mappába pl a D:\ meghajtóra, ha nincs D:\, jó a C:\ is.
4: letöltöd a 9-es pontban lévő Apk_Save_v1.5.apk-t, majd bemásolod az előbb létrehozott Androidtool mappába. (nekem, ahogy a képeken látszik is, autil a mappa neve)
5: Az Androidtool mappára/ba nyiss egy parancssort. Vagy bal shift és jobb klikk rá, ,majd "parancsablak nyitása itt", vagy a már mappában lécő "cmd" -re katt.
6: Írd be, hogy "apktool". Ha sikeresen feltelepítetted a java programokat, akkor ennek a képnek kell fogadnia:

7: Most feltelepítjük a "framework"-ket, ebből fogja nyerni a kicsomagoló program a forráskódhoz való információt. Írd be a parancssorba ezeket, egymás után, persze megvárva míg végez az egyikkel, majd utána mehet a másik:

"apktool if framework-res.apk"

"apktool if lge-res.apk"

"apktool if mediatek-res.apk"

8: Most pedig kicsomagoljuk a teszt alanyunkat. Írd be a parancssorba ezt:

"apktool d Apk_Save_1.5.apk" majd enter, ezt kell kapd:

A későbbiekben ha egy fájlt többször ki kell csomagolj, adódhat rá példa/előfordulhat, az "-f" kapcsolóval felül tudod írni a célmappát: "apktool d -f Apk_Save_1.5.apk". Kicsomagolás után nézzük meg az Androidtool mappánkat, lett benne egy Apk_Save_1.5 nevű mappa, több almappával.

9: Bármiféle módosítás előtt először meg próbáljuk vissza/be csomagolni a próba apk-nkat. Nehogy úgy járjatok, mint én az elején, hogy több órai gépelés veszett kárba, mert a visszacsomagolás hibát dobott ki utólag. Írd be a parancssorba ezt, ezzel a már meglévő mappát csomagoljuk vissza apk fájlba: "apktool b Apk_Save_1.5" Megjegyzés: találkoztam már olyannal is, hogy simán ki és be lehetett csomagolni az apk-t, de ahogy módosítottam benne akár csak egy szót, már nem tudtam visszacsomagolni, vagy nem indult el az alkalmazás. Szerencsére, ilyent nem sokat láttam még.

Észrevehetjük, hogy keletkezett egy új mappánk a főmappán belül: "dist"

Ebben található az újra összerakott még módosítatlan, még szignózatlan új apk fájlunk. Amit majd később "szingnózunk". Szingózás nélkül nem lehet az alkalmazást telepíteni. (Ez alól vannak kivételek, de ez már nem kezdő téma)

10:

Nézzünk bele kicsit a kicsomagolt apk mappájába. Más apk-kban még előfordulhatnak más mappák is, például "assets", "lib", "smali_classes xx", stb. A res mappában találhatóak általában a képek, ikonok, nyelvi fájlok, a menüre/működésre vonatkozó scriptek, a színek, a megjelenés, az animációk, stb. Nyugodtan nézzetek bennünk körül, nem fogtok vele kárt okozni. A smali mappában pedig a nyers forráskód található, itt is néha kell keresgélni Total Commander-rel, ha az adott szó/mondat nincs semelyik nyelvi fájlban.

Amire nekünk most szükség lesz az a values mappa, és abban is a strings.xml és még szokott lenni az arrays.xml, de az most nincs.

11: Magyarítás. Mivel a values mappa alapesetben az angol nyelv, ezért hozzunk létre egy values-hu mappát, amibe átmásoljuk az strings.xml-t. Ezt a Notepad++-al fogjuk szerkeszteni.

Értelemszerűen a vastagon szedett fekete angol szavakat kell lefordítani magyarra. Ez csak 9 sor, ez könnyű, hamar megvan. A műveletek legvégén tesztelni kell az appot a telefonon, hogy megfelelően néz e ki, nyelvtanilag rendben van e, stb, stb. Ha valami nincs rendben, azt könnyen tudjuk orvosolni utána is. (a több ezer soros fordítás, az már igen, akár hónapokig is eltarthat)

Amelyik fordítandó szót vagy mondatot nem találjuk sehol, se az "strings.xml"-ben, se az "arrays.xml".ben, se sehol, az nagy eséllyel magában a forráskódban lesz. Persze volt olyan, hogy sehogy sem találtam meg. Vegyük példának a "Modified" szót.

Sokszor több találatot is kidob rá, ezeket, ha nem egyértelmű az utalási fájl név, akkor egyesével végig kell nézni Notepadd++-al.

És már meg is találtuk:

12: Amit nem szabad fordítani vagy módosítani. Egy-két szabályt meg tudok mutatni, de ez is az idő elteltével és a rutin megszerzésével sajátítható el igazán. Ha valamit átírsz amit nem kellene, úgyis hibát fog kidobni összecsomagolásnál. Szerencsére a Notepad++-ban van undo gomb a fájl mentése után is, amivel vissza lehet lépkedni sokat.

Az arrays.xml-ek már kicsit trükkösebbek, ott vannak nagybetűs/kisbetűs angol szavak, számok, stb. Ott sem lehet mindent átírni.

Egy smali fájl, ezek piszok hosszúak szoktak néha lenni, ilyenkor kincs a Total Commander, ha szóra kell keresni fájlon belül.

13: Hibák. Összecsomagolásnál előfordulhatnak hibák, ezekből nagyon sok van. Ugyanazt tudom erre mondani, amit a 12-es pontnál: az idő elteltével és a rutin megszerzésével sajátítható el igazán, hogy melyik hiba/hibakód/hibakiírás mit jelent. Általában jelzi az adott fájlt és a sorszámot is, hogy hol keressük a hibát. (Néha csak egy friss aapt.exe vagy egy friss apktool.jar, vagy egy friss framework-res.apk hiányzik csak neki) Egy-két példát azért felhozok:

Itt valószínűleg régi volt az apktool.jar

Error parsing xml: mismatched tag:

Ez általában egy hiányzó > jelet jelent, amelyet véletlen kitörölhettél a fordítás során, vagy egyéb szintaktikai problémát okoztál.

Log töredék:

I: Checking whether resources has changed...
I: Building resources...
libpng error: Not a PNG file
ERROR: Failure processing PNG image D:\Dokumentumok\clockworkmod\APK-Multi-Tool\other\..\projects\am.apk\res\drawable\banner1.png
libpng error: Not a PNG file
ERROR: Failure processing PNG image D:\Dokumentumok\clockworkmod\APK-Multi-Tool\other\..\projects\am.apk\res\drawable\banner2.png

Itt az a baj, hogy a két png fájl nem png, hanem gif. Az összecsomagolás előtt át kell nevezni ezeket a fájlokat gif kiterjesztésre.

Erről Keeperv85 csinált is egy videót: [link]

Google találatok a hibákról és a megoldásukról: [link]

14: A színek megváltoztatása. Ha igényünk támad az alkalmazáson belül egy adott sáv vagy bármi más elem színének a megváltoztatására, és miért ne adódhatna ugye, ezt is megtehetjük. Itt a próba apk esetében szerencsénk van, mert kicsi és egyszerű, ezáltal a példának kiválasztott szín csak egy helyen található meg. Más esetben más apk-nál sajnos ez több percet is igénybe vehet, ha több színtalálatunk van, mire kiválasztjuk, hogy melyik a megfelelő amit mi meg akarunk változtatni.

Az eredeti a "halvány sárga", az általunk módosított a "halvány kék" szín.

A művelethez szükségünk lesz a Total Comannder-re, a Notepad++-ra és egy olyan rajz programra, ami meg tudja jeleníteni a színek hex kódjait. Sok ilyen van, például Adobe Photoshop, Paint.net, stb. Készítsünk egy screenshot-ot a telefonunkon a apk save-ról, majd azt nyissuk meg a számítógépen a rajzprogrammal. A pipetta eszközzel meg tudjuk nézni a keresett szín kódját:

Ha megvan a színkód, már csak meg kell keressük a forráskódban. Megnyitjuk a Total Commander-rel az Androidtool / Apk_Save_1.5 mappánkat, majd a "parancsok/keresés" menü (Alt+F7), Itt a "szöveg" kereséshez írjuk be a kódot, majd enter. Egy fájlt fog nekünk most csak találni, jobb klikk rá, majd "Edit with Notepad++".

Notepad++-on belül a ctrl+f billentyű paranccsal tudjuk megkerestetni a színkódot. A már előre kiválasztott saját szín kódunkat pedig beillesztjük a helyére, majd "Fájl/mentés", és ha újra össze csomagoljuk az apk-t, már az új szín lesz érvényben.

15: Szignózás. Az általános apk-k csak szignózás után lesznek használhatóak. Ezt könnyen megtehetjük parancssor-ból is, de a lusták mint én, egy erre szakosodott program segítségével is.

Parancssor:

"java -jar signapk.jar testkey.x509.pem testkey.pk8 Apk_Save_1.5.apk Apk_Save_1.5_signed.apk"

Ez természetesen csak akkor működik, ha a "dist" mappából átmásoljuk a "Apk_Save_1.5.apk-t" az Androidtool mappába.

A programmal:

Apk singner-rel megnyitjuk a szignózandó fájlunkat, majd utána katt a "Test Key" gombra. Ezek után mehet a tesztelés a telefonon.

A Prohardver topikja: [link]

Nagyon röviden ennyi a gyorstalpaló tanfolyam, és ez tényleg csak a jéghegy csúcsa! Itt sokat kell tanulni, és tanulni. Építő jellegű hozzászólásokat várok a témában jártasoktól, a kezdőktől pedig a kérdéseket :). Remélem páran rákaptok a honosítás izére, mert sajnos egyre kevesebben vagyunk, akik ezzel foglalkozunk. Idő hiányában már én sem nagyon. Aki még ne csinált ilyet, és most végigcsinálja a lépéseket, kíváncsian várom, hogy sikerült e neki a magyarítás / bármilyen belső mókolás.

Köszönöm, ha végigolvastatok, sziasztok.

Hozzászólások

(#1) DrBubo77


DrBubo77
addikt

Ez egy nagyon jó kis leírás lett. Ha lesz egy kicsit több időm, ki is fogom próbálni. :R

ÉN VAGYOK a feltámadás és az élet. (János 11:25)

(#2) Meggyi001 válasza DrBubo77 (#1) üzenetére

Köszönöm, várom az eredményt :). Amúgy lehetett volna még jobb és alaposabb a leírás, csak alig van időm. Kezdésnek, elindulásnak talán megteszi.

https://gamergep.hu/

(#3) hati


hati
addikt

Jó sok munka ahelyett, hogy írna a fejlesztőnek, hogy küldje el neki az angol strings.xml-t és a lefordított xml-t rakja bele az alkalmazásába. Az eredmény, ráadásul mindenkihez eljutna a következő frissítésnél, és nem is kellene mindent újra csinálni, egy újabb verzió kiadása után.

(#4) Meggyi001 válasza hati (#3) üzenetére

Tökéletesen igazad van. Két megjegyzés csak hozzá:

1: Lehet, hogy nem is tudja az illető/fordító, hogy erre van lehetősége.
2: Találkoztam nem egyszer az évek alatt olyan esettel amikor nem válaszol semmilyen megkeresésre a fejlesztő, vagy olyan is volt, hogy világosan megmondta, hogy nem érdekli a téma/lokalizálás.

A legtöbb nem ilyen hozzáállású, de sajnos ilyenek is vannak. Gondolom, ezért is kezdték el anno sokan maguktól magyarítani az appokat, és utána valahogy/valahol megosztani őket.

Vagy például amire nekem jó ez a módszer, személyre szabom magamnak az appot, színek, más szavak, stb. Ahogy nekem tetszik. Ezt nem mindenhol preferálják, mármint az egyedi igényeket.

Mindenesetre tanulni, kicsit fejleszteni magunkat, arra jó :)

[ Szerkesztve ]

https://gamergep.hu/

(#5) Meggyi001 válasza hati (#3) üzenetére

Itt egy mai példa is, 1-2 évet várt rá a fordító, hogy bekerüljön a fordítás az appba. Holott pár perc munka lenne az egész. [link]

https://gamergep.hu/

(#6) hati válasza Meggyi001 (#5) üzenetére


hati
addikt

Nyilván van kivétel is, de ez a fejlesztőt minősíti, mert részéről valóban 1 perc munka az egész, ráadásul neki növeli a felhasználói bázisát.

(#7) Meggyi001

WhatsApp le van védve, módosítás után hibát dob, most néztem meg valaki kedvéért:

https://gamergep.hu/

(#8) mexel


mexel
veterán

Sziasztok! Köszi az írást, tetszik.
Rögtön kérdésem is lenne: ha nem csomagolja be az apk-t mit kell csinálni?

(#9) Meggyi001 válasza mexel (#8) üzenetére

Ment pü.

https://gamergep.hu/

(#10) simx


simx
csendes tag

Sziasztok! Valaki tud segíteni egy apk magyarításban vagyis megoldani mert én nem vagyok ilyen guru persze nem ingyen. Egy autódiagról lenne szó a gyártónak írtam nem foglalkozik vele pedig nemvolt olcsó cucc de mind1.ha valaki vállalná írjon kérem a simonjoco85@gmail.com . köszönöm

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.