Vendég blogger: Nemhivatalos iPhone SDK (“toolchain”) készítése

H2CO3 kollégától kaptuk a következő “szösszenetet”, amiből azt tudhatjátok meg, hogy mik kellenek ahhoz, hogy OSX helyett linux alatt tudjatok iOS-alkalmazásokat fejleszteni. Figyelem: itt most igazi, száraz leírás következik.

***

0. DISCLAIMER

Az alábbi leírást legjobb tudásom szerint állítottam össze. Ennek ellenére, lehet, hogy valami hibás, a Te számítógépeden valami máshogy van, vagy csak elírtam valamit. Emiatt, kérlek, csak saját felelősségedre kövesd az itt leírtakat. Bár – tudomásom szerint – semmi illegális nincs ebben a cikkben, a jailbreak miatt elveszik a garanciád! Éppen ezért az itt leírtakból eredő közvetlen vagy közvetett (anyagi, jogi, netán egészségügyi :D) károkért SEMMILYEN FELELŐSSÉGET NEM VÁLLALOK. Egyébként nem valószínű, hogy akár a legkisebb kár is keletkezne, sem a szifonodban/iPod-odban/iPad-edben/AppleTV-dben, sem a számítógépedben, szóval csak bátran! ;-)

Ha terjeszted a cikkemet, azt örömmel veszem, csak kérlek, nevezz meg engem, mint eredeti szerzőt! Ha kiegészíteni-, javítani-, vagy bármilyen egylb módosítanivalót találsz az írásomban, akkor [kulturált formában] jelezd itt, a kommentek közt, nekem e-mailben, vagy akár javítsd ki Te magad, és az én említésemmel, s saját (ál)neveddel is ellátva tedd ki a saját honlapodra! Köszi szépen! :-)

I. PREFACE

Miről is lesz itt szó?

Aki rendesen figyelt az oldalon :D , az tudhatja, hogy szeretem kihasználni kedvenc okostelefonom képességeit. Természetesen azt sem tartottam fair play-nek, hogy az iKészülékekre való fejlesztés, saját programok írása csak Mac-en lehetséges. Erre két év (mivelhogy ennyi ideje vagyok lelkes iPhone felhasználó, és immár fejlesztőjelölt) alatt találtam pár megkerülési módszert (pl. webalkalmazások felruházása speciális képességekkel), de egyik sem volt az igazi. Azonban a nyáron megtaláltam a legjobb lehetőséget. Mivel akkoriban nem akartam Hackintosh-sal szenvedni (igaz, ez mára megváltozott, de a Linux még mindig közelebb áll a szívemhez), megpróbáltam magamnak elkészíteni az opensource toolchaint. Ha nem tudsz programozni, és gyengék az idegeid, ne olvass tovább! :D (persze, mindenki nyugodtan olvasson, az érdeklődőknek általában kedvük támad az ilyesmihez. Elég nehéz dolog az itt leírt folyamat – -de nem Nektek! Nagyjából féléves tapasztalatomat gyűjtöttem össze itt, ebben a posztban azért, mert én elég sokat szenvedtem az itt leírt dolgokkal, és szeretném, ha ezt másoknak nem kellene végigjárniuk!)

Némi magyarázat

Anno az Apple a 70-es években volt annyira rafinált, hogy ráérezzen: a jövő nem a Windows alapú platformoké. Ez eyébként a lelkes számítógép-használók és -értők körében majdnem teljesen be is jött. Ezért az egyik népszerű Unixot választotta a Mac OS, így később az iOS alapjául: ez a BSD (Berkeley Software Distribution, egy egyetemi projektként induló, nyílt forráskódú operációs rendszer) volt.

Mint holmi Unix-leszármazott, a BSD is erősen nyílt forráskódú történelmet tudhatott (már ekkorra) a háta mögött. A rá történő programozáshoz – melynek de facto szabványa már akkor is a C nyelv volt – , a GCC compilert használták (ez a program a GNU project által a mai napig fejlesztett, igen népszerű C fordító). Ez a mai napig megmaradt: csakúgy, mint Linuxon és Mac-en, az iOS platformon is a GCC az úr.

Hála Istennek, a GCC nemcsak nyílt forrású, de a GNU GPL licensz alatt is kerül kiadásra. Ezért az Apple-nek az iOS fejlesztőeszközök készítésekor – a licenszben foglaltak miatt – közzé kellett tenni a GCC módosított forrását (egyébiránt ezt az Apple fejlesztőcsapata többször “elfelejtette” megtenni, és igencsak fogvicsorgatva pótolta ezen mulasztásait, amikor Jay “Saurik” Freeman, oldalán a törvénnyel, erre szólította fel (!)). Ezeket a tényeket felhasználva egy pár ügyes hacker (közöttük pl. az iPhone Dev-Team tagja is) összeállítottak egy “kis” szkriptet ahhoz, hogy mindenki magának otthon lefordíthassa az iOS fejlesztőeszközök lényegi részét. Természetesen ez nem azt jelenti, hogy Mac nélkül is lesz Interface Builder meg Xcode kényelmes kódszerkesztővel, de teljes értékű programokat tudunk írni az iPhone-ra (is). [Szerény véleményem szerint egyébként sokkal jobb (NEM kényelmesebb!), főleg a kezdő fejlesztőknek, először Interface Builder és Xcode nélkül dolgozniuk. (Ezek az eszközök a kényelemért cserébe azt veszik el, ami az egyik legfontosabb: elrejtik, hogy mi megy a “motorházető alatt”. A fejlesztő ilyenkor javarészt nem tudja, hogy milyen kód, meg más egyéb fájlok generálódnak a grafikus felület összeollózásakor, nem látja egyből, hogy milyen beállításokkal fut a compiler, stb. Emiatt a későbbi tanulási folyamatban nehezebb lehet megértenie, hogy hogyan kerülhet egy kép az alkalmazásba, mikor nem húztuk bele, és ezzel párhuzamosan nem tudja, hogy mit csinál az UIImageView setImage metódusa.) Ennek ellenére pl. a szintaxiskiemelés nagyon hasznos és kényelmes lehetőség, ezért én a GNOME asztali környezet GEdit nevű egyszerű szövegszerkesztőjét használom a programírásra.]

Előfeltételek

1.) Programozás és nyelvek. Valamilyen szinten értened kell a C-alapú nylevekhez. A C és Objective-C középszintű ismerete elengedhetetlen, de nem árt némi C++-tudás sem (a runtime jellege miatt a nagy számítási igényű programok Objective-C nyelven írva jelentősen lassabban futnak, mint C++-ban lekódolva). Ha nem ismered ezeket a nyelveket, de már valamilyen programozási nyelvet/szkriptnyelvet (pl. JavaScript, Python) használtál, akkor érdemes egy rövid kis tutorialt/referenciát keresned az Interneten. Ha beszélsz angolul (ami a hibaüzenetek megértése végett amúgy is ajánlott), akkor érdemesebb angol nyelvű írások után kutatnod, mivel a magyar szakirodalom kissé hiányosabb az angol nyelvűhöz képest). Mivel ezután majdnem mindent (a feljesztői környezet elkészítését, iPhone programok lefordítását stb.) a terminálból (ez a Unix-szerű rendszerek parancssor-megfelelője) fogunk végezni, jól kell ismerned a BASH szintaxisát, illetve a programok fordításának mélyebb testreszabásához Makefile nyelvet (habár egy példa Makefile-t sima apphoz és MobileSubstrate-alapú pluginhez mellékelek a cikk végén). Az Apple-környezet miatt fontos érteni a PLIST fájlok szintaxisát (ez sima XML, meglehetősen szűk kulcsszókészlettel). Az Apple környezetben, op. rendszer alatt futó programok ugyanis ezt a formátumot használják információk, beállítások tárolására. Szöveg- és bináris formátumú plistek konvertálásához, szerkesztéséhez javaslom a PLUTIL nevezetű programot, ld. Függelék.

Ha szeretettel használod a különböző szkriptnyelveket (pl. Python, Perl, Ruby, netán JavaScript), és nem akarod megtanulni a “nehéz” C nyelvcsaládot (bár nekem, sokévnyi JavaScript-gépelés után pár napnál többig nem tartott a C megtanulása, csak bátran!), akkor is érdemes tovább olvasnod: bár ezekre a nyelvekre általában írtak Objective-C kapcsolódási könyvtárat, nem árt megismerkedni a natív úttal sem.

Fontos továbbá, hogy valamennyire értsd a kompilált nyelvű programok lefordításának folyamatát. Természetesen nem kell, hogy tudj compilert írni [én sem tudok, nem is fogok egyhamar tudni], de nézz utána a fordítás lépéseinek (AST, assembly, object code, a linkelés folyamata és értelme stb.)

2.) Operációs rendszer a számítógépen. Erősen ajánlom valamilyen Unix-variáns használatát ÉS alapos ismeretét (természetesen ennek megfelelően Mac-en is működik a dolog, de ugye ott a hivatalos fejlesztőeszközök megléte és támogatottsága miatt fölösleges ez az eljárás), de természetesen Windows alatt is működik a dolog, ld. később. Ugyancsak ajánlott a Te saját oprendszered ismerete mellett a unixok általános koncepcióinak, valamint a Cocoa és Cocoa Touch irányelveinek, konvencióinak ismerete.

3.) Egy jailbreakelt iOS-t futtató iKészülék. Tulajdonképpen bármin (iPhone 2G…4, iPod Touch 1G…4G, iPad) elfutnak a készülő (teszt-)programok, bár az AppleTV 2-ről nem sokat tudni. A jailbreak nélkülözhetetlen, hiszen hivatalos Apple-féle digitális aláírás nélkül az iOS nem engedi fel a programokat (nem is beszélve a MobileSubstrate-alapú “tweak”-ekről, melyeknél a hivatalos firmware-ben letiltott root account- és fájlrendszer-hozzáférés szükséges). A leírásom iOS 3.x.x és iOS 4.x.x alatt működik, az iOS 2.x.x már egyrészt elavult, másrészt jómagam kb. 2 napig használtam (2009 júniusa vége óta van szifonom, és ugye akkoriban jelent meg a 3.0, amire szinte azonnal frissítettem). E miatt a szóba jöhető készülékek:

iPhone + iOS 3.0, 3.0.1, 3.1, 3.1.2, 3.1.3
iPhone 3G + iOS 3.0, 3.0.1, 3.1, 3.1.2, 3.1.3, 4.0, 4.0.1, 4.0.2, 4.1, 4.2.1
iPhone 3GS és iPhone 4 az összes szoftveren
iPod Touch 1G mint az iPhone (az iPod Touchokra kiadtak iOS 3.1.1-et is, az is jó!)
iPod Touch 2G mint az iPhone 3G ( —– ” —– )
iPod Touch 3G, 4G mint az iPhone 3GS és iPhone 4.
iPad az összes szoftveren
(???Apple TV 2???)

4.) Egy hasznos kényelmi szempont. Nem árt, ha van egy jól kialakított projektstruktúrád. Én ez alatt a rendszerezett fájlrendszert, konvencionális (mi erre a jó magyar szó?) elnevezéseket értem (az elnevezések különösen lényeges szerepet kapnak a tényleges forráskódban). Nekem például minden projekt egy mappa, amin belül van src (“SouRCe”) a kódnak, bld (“BuiLD”) a kész programnak, valamint misc (“MISCellaneous”) az ún. erőforrásoknak, tehát az Info.plist fájlnak, az ikonnak, az elinduláskor látszó “splash screen”-nek stb. Én a konzisztencia érdekében csináltam magamnak egy-egy kis projekt-alapot, amit egy BASH-szkripttel lemásolva, majd a szükséges dolgokat átnevezve (nincs több 4-5 sornál!) kész a friss iPhone alkalmazás, készen állva a kódolásra.

Az anyarendszer (“host”)

Az alábbi leírás Linuxra (speciálisabban az Ubuntunak a cikk írásának pillanatában legfrissebb, 10.10 “Maverick Meerkat” verziójához igazodva) készült, de némi trükközéssel Windowsra is értelmezhető (ehhez valamilyen Unix-emulátort, pl. MinGW-t, Cygwin-t kell telepíteni). (Egyébként a megrögzött Windows-használóknak is érdemes legalább egy gépre Linuxot tenni, vagy pl. az Ubuntut Wubival, live CD-vel kipróbálni: kisebb, gyorsabb, jobb, ingyenes, rengeteg hasznos, előretelepített alkalmazással, _egyes disztribúciókban_ kiváló magyarítással – fejlesztőknek ideális.) Természetesen a parancsok bármilyen Debian-alapú disztrón működni fognak (nem Debian-alapú rendszeren az APT/egyéb csomagkezelőparancsokat értelemszerűen a disztró saját csomagkezelőjének megfelelően kell módosítani, pl. Yum). Csak hozzávetés végett: gépem egy Asus laptop, AMD Athlon64-es procival, 3 giga rammal, és 320 giga HDD-vel.

II. A TOOLCHAIN ELKÉSZÍTÉSE

Akkor vágjunk is bele (amennyiben nem vagy rendszergazda, root, akkor többször be kell majd írnod a jelszavadat! Ha ezt szeretnéd elkerülni, akkor a sudoers fájlhoz add hozzá magadat és felhasználói csoportodat NOPASSWD: ALL attribútumokkal)!

Előkészületek

Az alábbi parancsokat mindig a Home-ban (~) add ki!

Egy pár dolgot kell telepíteni:
[kód: BASH]
sudo apt-get install make automake m4 autotools gcc gcc-multilib g++ g++-multilib gobjc gobjc-multilib bison flex gzip bzip2 libbz2 libbz2-dev libxml2 libxml2-dev libssl libssl-dev p7zip p7zip-full subversion git git-core uuid wget
[/kód]

Szükségünk lesz továbbá a XAR-ra: ehhez tegyél így:
[kód: BASH]
wget http://xar.googlecode.com/files/xar-1.5.2.tar.gz
tar -xzvf xar-1.5.2.tar.gz
pushd xar-1.5.2
./configure
make
sudo make install
popd

[/kód]

A következő lépés: szükségünk van az iPhone Dev On Linux googlecode projekt fájljaira:
[kód: BASH]
mkdir ios-toolchain
pushd ios-toolchain
svn checkout http://iphonedevonlinux.googlecode.com/svm/trunk/ ./
popd

[/kód]

Ezek után jön a nehezebb része. Le kell tölteni az iPhone SDK 3.1.3-as verzióját (reigsztrált Apple Developer kell, hogy legyél, a reg még ingyenes!), majd 7Zip-pel kibontani a letöltött fájlt: iphone_sdk_3.1.3_with_xcode_3.1.4__leopard__9m2809a.dmg

Ha letöltötted, mozgasd át a felhasználói fiókod főkönyvtárába (“~”, nálame ez /home/h2co3), majd:
[kód: BASH]
7z x iphone_sdk_3.1.3_with_xcode_3.1.4__leopard__9m2809a.dmg # SOKÁIG TART.
sudo mkdir /media/dmg
sudo mount -t hfsplus -o loop 5.hfs /media/dmg

[/kód]

Ekkor megjelenik a fájlkezelőben a most felmount-olt DMG. Innen kell két csomagot kimásolni (a Packages mappában vannak): iPhoneSDK3_1_2.pkg és MacOSX10.5.pkg. Ha kicsit újabb fájlokat szeretnél, akkor másold ki az iPhoneSDK3_1_3.pkg-t és a MacOSX10.6.pkg-t helyettük (figyelem: ebben az esetben a kimásolt mappákat át kell nevezned, lásd a *-ot!).

Másold valahová (pl. Home-ba) a két fájlt, majd:
[kód: BASH]
xar -xf iPhoneSDK3_1_2.pkg
mv Payload Payload.gz
gunzip payload
cpio -i < Payload
xar -xf MacOSX10.5.pkg
mv Payload Payload.gz
gunzip Payload
cpio -i < Payload

[/kód]

A keletkező mappákban keresd meg az iPhoneOS3.1.2.sdk illetve a MacOSX10.5.sdk nevű mappákat (*: vagy a 3.1.3 illetve 10.6-osakatm de ekkor át kell őket nevezned 3.1.2 és 10.6-ra, értelemszerűen), majd mozgasd őket a ~/ios-toolchain/sdks mappába. Töltsd le az iPhone 3G 3.1.2-es szoftverét, majd tedd az IPSW filet a ~/ios-toolchain/files/firmware mappába: iPhone1,2_3.1.2_7D11_Restore.ipsw (vagy a http://felixbruns.de/iPod/firmware honlapról is leszedheted a fájlt).

Megjegyzés: ha nagyon benne vagy már a letöltögetésben, most töltsd le az iOS 4.2-es SDK-t is, az előbb leírt módon szedd ki belőle az iPhonOS4_2.sdk mappát, és keresd meg benne a header illetve a framework fájlokat (nomeg az usr/lib mappát), mert ezek is kelleni fognak az iPhone appod kódjának lefordításához. Érdemes a 3.2-es (tehát csak iPad) SDK-t is letölteni, mivel abban rengeteg olyan header fájl van, ami hasznos, iOS4-ben is meglévő lehetőségeket engedélyez, viszont a 4-es headerfájlokat az újonnan bevezetett: (^) szintaxis miatt a régebbi compiler hibásnak jelzi.

Most már elkezdheted a toolchain lefordítását:
[kód: BASH]
cd ~/ios-toolchain
./toolchain.sh headers # SOKÁIG TART.
./toolchain.sh darwin_sources # SOKÁIG TART.
./toolchain.sh firmware
./toolchain.sh build # MÉG TOVÁBB TART.

[/kód]

Az első (“./toolchain.sh headers”) hívás kiszedi a neki szükséges header-öket a két .sdk “kiterjesztésű” mappából. A második letölti a toolchain ~100 MB-nyi forrását. A harmadik további fájlokat szed ki a letöltött IPSW-ből. A negyedik pedig elkezdené a fordítást. De a negyedik parancs (./toolchain.sh build) NEM fog működni: sok-sok letöltés és SVN, valamint GIT checkout illetve fájlpatchelés után kapsz egy hibaüzenetet: building odcctools failed. Ez “normális”: azért van, mert hibás a toolchain egy részének forráskódja. Megoldás: menj be a ~/ios-toolchain/toolchain/src/cctools/ld64/src mappába, majd add hozzá az összes ott levő .hpp kiterjesztésű fájlhoz az alábbiakat (megoldható például a kódrészlet vágólapra helyezésével, majd gedit *.hpp paranccsal):

// PATCH azért, hogy működjön a build — by H2CO3, 18/12/2010
#import <cstdio>
#import <cstdlib>
#import <climits>
// PATCH vége

Utána mégegyszer próbálkozz meg ezzel: ./toolchain.sh build

Ha minden igaz, jó félóra várakozás után (rengeteg warning és hibaüzenet lesz közben, de ha nem szakad meg a fordítás, nem kell figyelned rájuk) kiírja: It seems like the toolchain built. (“Úgy látszik, a toolchain elkészült.”)

Remek! :-) Készen is vagy a nehezével!

Utolsó lépés: a ~/ios-toolchain/toolchain/sys mappát cseréld ki az iPhoneOS4_2.sdk mappából kinyert headereket és library-ket, frameworköket tartalmazó mappával (a mappa tartalma kell, hogy legyen: System/Library/Frameworks, usr/lib, usr/include; a 4.2-es header-öket nem szereti a linuxos GCC, ezért azok maradhatnak a 3.1.2-es, vagy az emlegetett 3.2-es verzión!)

III. KÉT PÉLDAPROGRAM

1. példaprogram: Hello World!

— itt vágd le —
// ments el engem main.m néven valahová, majd
// így fordíts le: make, sudo make install
// Készítette: H2CO3, 28/01/2011
@interface hello: UIApplication {
}
@end
@implementation hello
– (BOOL)application: (UIApplication *) app didFinishLaunchingWithOptions: (NSDictionary *) opts {
UIWindow *mainW = [UIWindow new];
UIView *mainV = [UIView new];
mainW.frame = CGRectMake (0, 0, 320, 480); mainV.frame = CGRectMake (0, 0, 320, 480);
[mainW addSubview: mainV];
[mainW makeKeyAndVisible];
UILabel *label = [UILabel new];
label.text = @”Hello World!”;
label.frame = CGRectMake (0, 220, 320, 40);
[mainV addSubview: label];
}
@end
int main (int argcm char **argv) {
NSAutoreleasePool *p = [NSAutoreleasePool new];
int exitCode = UIApplicationMain (argc, argv, @”hello”, @”hello”);
[p release];
return (exitCode);
}
// fájl vége — main.m

— itt vágd le —

Fordítsd le az előbb leírt paranccsal (ügyelj, hogy a Makefile-ban PROJECT = HelloWorld szerepeljen, az első sorok környékén van), majd a keletkező végrehajtható fájlt tedd bele egy HelloWorld.app nevű mappába, a következő tartalmú Info.plist fájllal együtt:

— itt vágd le —
<plist>
<dict>
<key>CFBundleIdentifier</key>
<string>h2co3.helloworld</string>
<key>CFBundleName</key>
<string>HelloWorld</string>
<key>CFBundleExecutable</key>
<string>HelloWorld</key>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>UIStatusBarHidden</key>
<true />
</dict>
</plist>

— itt vágd le —

Másold fel a szifonra a /Applications mappába (pld. scp-vel), majd indítsd újra/repspringeld az almás készüléket. Ha minden igaz, egy fehér ikon megjelenik, és rátapizva ezt látod: Hello World!  :D

A másik példaprogram egy MobileSubstrate-plugin. Az eredetit az iPod Touch Fans oldalán találtam, és nem keveset szépítgettem rajta, valamint a tulajdonképpeni alkalmazást is átírtam (az eredeti verzió meglehetősen gonosz volt: nem tudtál megnyitni egyetlen appot sem a főképernyőről! :D). Csupán annyit tesz, hogy a programok megnyitásakor rezeg egyet. Megtalálod a mellékletekben.

Megjegyzések:

Egyetlen megjegyzésem aktuális a korábbiakból:
Az UIKit – hála az Apple fejleszőinek – kissé rendszertelen felépítésű, de az iPhone, iOS appok gyakorlatilag erre épülnek. Muszáj megtanulnod, ha szeretnél kezdeni valamit az újonnan elkészült fejlesztői környezeteddel. Később majd meg fogod tudni írni (!) a saját GUI keretrendszeredet, de addi itt van az alapértelmezett (egyébként kócossága ellenére hihetetlenül sok lehetőséget és funkcionalitást tartalmaz). “Forgasd” gyakran:
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKit_Framework/_index.html

IV. UTÓSZÓ ÉS FÜGGELÉKEK

Hibakeresés

Már a múlt alkalommal is halasztgattam. :-) Tényleg megér egy külön cikket, elöljáróban csak annyi, hogy főleg a C és Objective-C nyelvek két fontos részénél van probléma: mutatók (pointerek), nem implementált metódushívások (a program/SpringBoard crasheléséhez vezetnek), illetve felesleges memóriafogyasztás (memory leak): a fel nem használt objektumok memóriában felejtése.

Programok

PLUtil: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/plutil.1.html
GEdit: alapértelmezetten jön a linux alapú operációs rendszerek GNOME asztali felületéhez, nagyon jó kis szerkesztő, de a beállítások néha kissé el vannak rejtve.
Nano: a _legjobb_ parancssoros szövegszerkesztő. Linuxon, Mac OS X-en alapértelmezett.

Referenciák

C: a “de facto” Unix programozási nyelv; tutorial itt:
http://www.physics.drexel.edu/courses/Comp_Phys/General/C_basics/; http://www.cprogramming.com/tutorial/c/lesson1.html
Objective-C: nem nehéz nyelv (főleg, ha ismered a C-t), de meg kell tanulni:
http://www.otierney.net/objective-c.html; http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html
C++: jól jöhet. Erre tessék:
http://www.cprogramming.com/tutorial/lesson1.html
Makefile: nagyon érdemes használni. Tutorial:
http://mrbook.org/tutorials/make/
PLIST dokumentáció:
http://en.wikipedia.org/wiki/Property_list (kivételesen a Wikipédia igazat mond…)

Függelékek

Csatolt állományok: AppTemplate.tar.gz, MSTemplate.tar.gz, HelloWorldApp.tar.gz, HelloWorldSubstrate.tar.gz

Kapcsolódó cikkek:

  1. én bevittem a szétbaszodott feltört iTouch-omat és szó nélkül (2-3 hét mulva) kaptam egy vadi újjat jaés volt rajta egy kép a jailbreakme.com oldalról amit elvileg nem nézhetnek meg de ebben nem vagyok biztos..
    összeségében leszarják szerintem….

  2. @davidDodo2: Én (egyelőre) nem fejlesztek semmit, de ha fogok, akkor azt Macen fogom :) (Macre és iOS-re)
    Ezt inkább arra értettem, hogy ez egy kicsit bonyolultnak tűnik nekem (így elsőre), de ezt jelzik is a cikk elején, ezért ez félig-meddig inkább csak egy vicces megjegyzés volt (ezért is a smiley :))
    De egyébként tényleg nagyon hasznos cikk, a Linuxosok biztos nagyon örülnek neki. Szóval grat hozzá a cikkírónak!

  3. iphone4-hez nem akar valaki írni olyan cuccot mint 3G S-re? -> 1080p-be vegyen fel videót (mert ugye 3G S-re csináltak olyat hogy 720p-be vegyen) iphone4-en ez nem működne 1080p-vel?

  4. @H2CO3: Nem jöttem rá hogyan kéne használni de megnéztem az oldalt és elég hasznos progi lenne. A YouTube app-ba se találtam semmit meg a beállításokban se. Tudnál segíteni egy kicsit? :D

  5. @WiC0: persze. Kell hozzá a libmswrapper, az ezen a linken: ht tp://w ww.multiupload.com/ZXAW9FKD1O levő fájlból a két debet kell feltelepítened (először az mswrappert), majd less bele a YouTube.app-ba egy respring után: próbálj meg lejátszani egy videót!

  6. Ha valaki leforgatta Windows alatt, bedobná a közösbe, hogy ne kelljen mindenkinek órákat vacakolnia ugyanazzal? (Megaupload vagy ilyesmi megtenné.) Köszönet.

  7. Már bocsánat, lehet huje kérdés, de most akkor kell ehhez a cert,ami miatt ugye annyian nem tudnak fejleszteni (mer drága na)? Vagy ha nem akkor hogy rakod fel a telóra?

  8. Wow akkor asszem mostantól ez a post lesz számomra a szentírás. Nagyon régóta várok egy ilyen workaround-ra (félreértés elkerülése miatt nem meggazdagodni akarok, hanem írni egy saját programot a saját telefonomra, csak ugye erre nem igazán van egy átlag egyetemistának 200 rongya).
    Nagyon köszi, régóta várok már erre, ki ne töröljétek, (másolom is le).:D

  9. valaki meg tudja mondani, h a magyar programokat, honnan tudom megszerezni ingyen és egyszerűen (apptrackr.org-on) nincsenek… előre is köszi :)

  10. @H2CO3: Szia!
    Segitségedet szeretném kérni. Valahol a toolchainnel elakadtam.Amikor futtatom a ./toolchain.sh firmware-t, akkor azt mondja, hogy nem megfelelő neki az ipsw, pedig azt adtam neki, amit innen szedtem le a linkröl, valamint a “svn checkout http://iphonedevonlinux.googlecode.com/svm/trunk/ ./” sem müködött, gondolom ezért hibázik a dolog. Ha feltudnánk venni a kapcsolatok MSN-en akár, azt megköszönném.Üdv

Írd le a véleményedet!

Hozzászólás írásához be kell jelentkezned!