fbpx Skip to content

Többen is érdeklődtök a jailbreakes fejlesztés iránt, ezért úgy döntöttünk, indítunk egy cikksorozatot egy egyszerű tweak elkészítéséről, ahol lépésről-lépésre végigvezetünk a kiegészítő születésén.

Habár az App Store nemrég érte el az alkalmazások számának tekintetében álomhatárnak mondható egymilliót, és a felhasználók láthatóan lelkesen használják az általuk letöltött mintegy negyvenmilliárd appot, azért mindig van némi üröm az örömben. Amint azt tudjuk, az Apple mobil operációs rendszere igen sok – valós vagy vélt biztonsági, vagy egyszerűen gazdasági okkal rendelkező – korlátozással rendelkezik, ennek pedig része a fejlesztők kezének megkötése is. Minden valamire való iOS-fejlesztő tudja (hiszen a saját bőrén tapasztalja), hogy az iOS által nyújtott programozási interfészek (API-k) közül több hasznos funkciót nyújtó tiltott, privát (nincsen dokumentálva a léte sem), vagy más okokból nem használható egy App Store-ba készülő alkalmazásban.

Természetesen (majdnem) minden, az ilyen korlátozások feloldására, a készülék testreszabására valamint teljesértékű számítástechnikai eszközként való használatára irányuló vágy megvalósulhat az iPhone-ok és iPadek jailbreakelésével, majd olyan szoftverek készítésével, amelyek az immár az Apple által nagy testvérként meg nem figyelt és funkcionalitásaikban meg nem kötött módon segítik kedvenc kütyüjeink hasznosabbá és egyedivé tételét.

Mindenki használja manapság a „tweak” kifejezést, de a szomorú tapasztalat az, hogy nemcsak sok felhasználó, hanem egyes „fejlesztők” (igen, idézőjelben) sincsenek tisztában a szó iOS-re vonatkozó jelentésével.

A tweakek olyan kiegészítő programok, amelyek a hagyományos (App Store-os és cydiás) alkalmazásokkal ellentétben nem önállóan futnak, hanem az operációs rendszer vagy valamely más alkalmazás processzébe beépülve annak a viselkedését módosítják. Az ok, amiért ilyen programok írása különösen könnyű iOS-en (és egyébként ugyanilyen könnyű lenne az OS X esetében, ha szükség lenne rá), az a legtöbb alkalmazás és az operációs rendszer magasabb szintű rétegei által is használt programozási nyelvnek, az Objective-C-nek köszönhető. A jelen sorokat olvasó fejlesztőknek illik, hogy már be is ugorjon, miért: a nyelv dinamikus. A program futása közben használt osztályokról, objektumokról, metódusokról, típusokról az Objective-C runtime segítségével információkat kérdezhetünk le, és azokat – egy bizonyos mértékig – módosíthatjuk is.

A nyelv ezen előnyös tulajdonságát kihasználva írta meg még a jailbreakelés hőskorában az iOS-hackerek egyik legnagyobbika, Saurik, a MobileSubstrate nevű library-t. Ez a „könyvtár” gyakorlatilag egy egyszerű, biztonságos keretet ad az Objective-C runtime library köré, és segítségével könnyen belenyúlhatunk csaknem minden rendszer- és felhasználói alkalmazásba.

Jelen cikksorozat elkövetkezendő részeiben egy teljes cydiás tweak elkészítését fogom bemutatni, a nulláról indulva egészen a kész, Cydiában közzé tehető Debian csomag felépítéséig. Természetesen van néhány feltétele annak, hogy ezt a leírást követni tudd.

Első és legfontosabb feltétel: legalább alap- de inkább „középszintű” iOS-programozói ismeretek. Ezek nélkül inkább bele se kezdj – a tweakek készítése érdekes, ám néha nem kockázatmentes dolog. Ne feledjétek: a tweakek sokszor az operációs rendszer alapvető funkcióit hackelik meg! A különböző alapvető koncepciók ismerete nélkül könnyen megtörténhet, hogy szoftverünk „felfalja” a memóriát, vagy összeomlasztja a rendszert. Bár az ilyen hibák nem halálosak, és általában a MobileSubstrate maga kapja el az esetleg hibásan működő beépülők grabancát, legvégső esetben akár restore is szükséges lehet, ami pedig potenciális adatvesztéssel járhat (ha nem szinkronizálunk rendszeresen az iTunes-szal). Tudjuk tehát perfektül a C és az Objective-C nyelvet, ismerjük és tudjuk gördülékenyen használni a Cocoa Touch API komponenseit, osztályait és szabályait.

original

Másodszor: egy működőképes cross-toolchain iOS-re. Aki az első pontban leírt dolgokat teljesítette, annak már bizonyosan van ilyen. 🙂 Természetesen legyen az hivatalos, az Xcode-dal együtt feltelepülő OS X-en futó toolchain, vagy egy linuxos (horribile dictu, windowsos), cross llvm-gcc alapú, akár egy magán a készüléken futó, natív eszköztár (innen közvetlenül letölthető): mind megfelel a célnak. Egy kisebb változtatást mindhárom esetben meg kell tennünk azonban: a MobileSubstrate használatához annak Cydiából való telepítése (van, akinek nincs telepítve egyébként is?) után a fejlesztéshez szükséges részeit a toolchain megfelelő részébe kell másolnunk. Nevezetesen a készüléken megtalálható fájlok közül a /usr/lib/libsubstrate.dylib fájlt a <SYSROOT>/usr/lib/libsubstrate.dylib, a /usr/include/substrate.h fájlt pedig a <SYSROOT>/usr/include/substrate.h helyre kell másolnunk, hogy a tweakünk fordítása során a compiler és a linker megtalálja őket (a <SYSROOT> helyére természetesen azt a könyvtárat helyettesítsük be, ahol a toolchain által használt library-k és header-ek találhatóak). Hasonló átmásolgatásokat a későbbiek során is lehet, hogy meg kell ejtenetek majd – a Cydiában számtalan hasznos library található, amelyek közül több kifejezetten tweakekhez való (ilyen például az Activator, a libstatusbar vagy a libipodimport).

IMG_0159

Egyvalamit még említésre méltónak tartok még így a legelején megemlíteni. Létezik több olyan keretrendszer, framework is, amely specifikusan az iOS-tweakek fejlesztésének megkönnyítését tűzte ki célul (ilyenek a Theos és az iOSOpenDev). Mi azonban nem fogjuk ezeket használni, és ennek kettős oka van. Az egyik az, hogy „történeti okokból” én nem használom ezeket. A másik az, hogy így megtanul(hat)játok kezelni a fontosabb parancssoros fejlesztői eszközöket, hogy ne legyetek semmilyen kiegészítőre, segédprogramra szorulva – sajnálatos tapasztalatom az is, hogy valaki úgy próbált meg az iOS-tweakek írásához hozzáfogni, hogy egyáltalán nem is tudta, hogyan kell a compiler-t kézzel meghívni (szomorú, bár annyira nem meglepő dolog a mai IDE-k világában).

Nos, mára ennyit bevezetőnek. Kövessetek minket figyelemmel, hamarosan folytatása következik! 😉

Olvasd el a hozzászólásokat is

1 Comment

  1. Hehejj!!! Má pont ideje vót egy ilyen sorozatnak! 😀


Add a Comment