Header Image
Hirdetés
Szavazz!
Teszik az AOSP-s Magyar ROM?
 
Bejelentkezés



Oldalainkat 3 vendég böngészi
Számlálók
Ma: 1
Tegnap: 14
A hónapban: 345
Összes: 15986
Android honosítás II PDF Nyomtatás E-mail
Írta: Apoth   
2010. május 17. hétfő, 17:35

 

Az apk csomagok kezelése

A sorozat előző részében megismerkedtünk az apk csomagok felépítésével, eljöt az idő hogy gyakorlatba ültessük az elméleti részt. A fájlok kibontásával kell kezdenünk, amihez egy nagyon ügyes kis programot használhatunk: az apktoolt. A program ingyenesen letölthető INNEN. Két fájlra lesz szükségünk, mégpedig magára az apktoolra, és a megfelelő platformra kiadott indító állományára. Nem akarok sok időt vesztegetni, az apktool telepítéséhez minden infó megvan az oldalukon, aki elakadt, kérdezzen. Én Linux alapú oprendszert használok, és ajánlom mindenkinek, hogy akár virtuális gépben, de valamilyen Linux alapú rendszer, esetleg Ubuntu alatt próbálgassa az itt leírtakat. Természetesen Windows és MAC-os alatt is van lehetőség ezekre a dolgokra, ha ragaszkodtok az oprendszeretekhez, próbáljátok értelmezni a használt parancsokat, és alakítsátok őket a megfelelő rendszer parancssorához.

Mindenünk megvan hát a csomagok kezeléséhez, bontsunk is ki egy APK fájlt:
Lássuk hogy is működik az apktool:

 

$ apktool
Apktool v1.1.1 - a tool for reengineering Android apk files
Copyright 2010 Ryszard Wiśniewski <
  Ezt a címet a spamrobotok ellen védjük. Engedélyezze a Javascript használatát, hogy megtekinthesse.
 >

Usage: apktool [-v|--verbose] COMMAND [...]

COMMANDs are:

    d[ecode] [-s|--no-src][-r|--no-res][-d|--debug] <file.apk> <dir>
        Decode <file.apk> to <dir>.

        -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[uild] [-f|--force-all][-d|--debug] [<app_path>]
        Build an apk from already decoded application located in <app_path>.
        Apk file will be placed in <app_path>/dist/out.apk .

        It will automatically detect, whether files was changed and perform
        needed steps only.

        If you omit <app_path> then current directory will be used.

        -f, --force-all
            Skip changes detection and build all files.
        -d, --debug
            Build in debug mode. Check project page for more info.

For additional info, see: http://code.google.com/p/android-apktool/

Ha áttanulmányoztuk a súgót, bontsunk is ki egy APK fájlt, legyen az a Launcher.apk:

$ apktool d -s Launcher.apk Launcher
I: Copying raw classes.dex file...
I: Decoding resource table...
I: Decoding resources...
I: Copying assets and libs...

Láthatjuk, hogy létrejött egy mappa Launcher néven. ha belekukkantunk, a következő fájlokat fogjuk látni:

9patch  AndroidManifest.xml  classes.dex  res

A kibontáshoz a "d", azaz decode és a "-s" azaz források nélkül kapcsolókat használtuk, így csak a res mappát bontottuk ki, a forrásfájlokhoz nem nyúlunk hozzá. A kibontott/létrejött mappák a következők:
9patch: Az android csomagokban van lehetőségünk amolyan "kimaszkolt" képelemeket létrehozni. Ez azért jó, mert az így létrehozott fájlokat a megfelelő paraméterekkel lehet nyújatni, nem szükséges a képek több méretbeni tárolása. A 9patch mappában tárolt fájlok segítenek a maszkolt képek majdani visszaalakításában, a honosításokhoz nincs szükségünk rá.
AndroidManifest.xml: az előző cikkben volt róla szó, lapozzatok vissza
classes.dex: erről megint csak az előző részben olvashattatok, ahogy sanyiii mondta: az src mappában tárolt java források ból fordított bájtkód van benne, mégegyszer köszönöm neki a javítást :)
res mappa: volt szó róla az előző részben, nézegessétek, tanulmányozzátok az itt tárolt fájlokat, a következő, befejező cikkban részletesen kitárgyaljuk.

Kicsomagoltuk hát az első APK csomagunkat. A kísérletezni vágyó olvasók csinálhatnak rajta módosításokat, és lássuk, hogyan lehet újra APK-t varázsolni a könyvtárakból:

$ apktool b Launcher
I: Copying classes.dex file...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...

Tehát a classes.dex úgy ahogy van be lett másolva a csomagba, ellenőrizve lettek a módosítások, összepakoltuk a res mappát, és létrehoztuk az apk csomagot. Most a Launcher könyvtárban létrejött egy "dist" mappa, amiben megtalálhatjuk az out.apk fájlt. Ez a most összecsomagolt APK-nk, ami viszont még nincs aláírva. Az aláíráshoz először kulcsot kell gyártanunk magunknak.
A kulcs létrehozásához telepítve kell legyen a JAVA JDK a gépünkre. Windows userek innen letölthetik: http://java.sun.com/javase/downloads/index.jsp Linux felhasználók csak telepítsék repóból (ajánlom az openjdk-t)
Ha sikerült feltelepíteni a JDK-t, generáljuk le a kulcsunkat:

keytool -genkey -alias kulcsom.keystore -keyalg RSA -validity 20000 -keystore kulcsom.keystore

Most létrejött a saját privát kulcsunk, amivel aláírhatjuk az APK csomagot:

jarsigner -verbose -keystore kulcsom.keystore -signedjar Launcher/dist/Launcher.apk Launcher/dist/out.apk kulcsom.keystore

Most létrejött a Launcher/dist/Launcher.apk, ami már az újonnan lefordított APK fájlunk aláírt verziója.

Ennek a résznek itt van vége, a következő cikkben a honosítás menetével, és az update csomagok létrehozásával ismerkedünk meg.

 

Módosítás dátuma: 2010. május 17. hétfő, 18:00
 
Free template "Frozen New Year" by [ Anch ] Gorsk.net Studio. Please, don't remove this hidden copyleft! You have got this template gratis, so don't become a freak.