Wstęp
Po wprowadzeniu do Objective-C czas przystąpić do stworzenia pierwszej aplikacji na iPhona. Postaram się pokazać krok po kroku jak stworzyć “hello world” od stworzenia projektu po umieszczenie go na telefonie. Deploy aplikacji odbędzie się na telefonie ze złamanymi zabezpieczeniami.
Pamiętaj sprawdź czy wszystkie czynności opisane poniżej są legalne w Twoim kraju. Nie ponoszę odpowiedzialności za zniszczenia ani złamanie przez Ciebie prawa.
Jailbreak iphone
By przetestować aplikację w rzeczywistym środowisku pracy bez uczestnictwa w Developer Program należy zainstalować wersję firmware, pozbawioną zabezpieczeń. W tym celu (można to wykonać na Windowsie lub Mac OS X):
- Uaktualnij iTunes
- Ściągnij Quick Pwn 2.1
- Ściągnij odpowiedni firmware
- Podłącz iPhona sprawdź w iTunes czy telefon jest widoczny
- Rozpakuj QuickPwn
- Uruchom QuickPwn.exe
- Postępuj według instrukcji na telefonie
Powyższa instrukcja była dla systemu Windows sposób instalacji dla Mac OS X można znaleźć na tym blogu.
Instalacja ssh
W celu umieszczania aplikacji na telefonie będziemy potrzebowali ssh. Uwaga potrzebne będzie połączenie wi-fi. W tym celu należy wykonać następujące kroki:
- Uruchom aplikację Cydia na iPhonie
- Przejdź na zakładkę Search
- Wpisz OpenSSH
- Naciśnij Install
- Otwórz ustawienia sieci na iPhonie
- Sprawdź IP jakie przydzielono telefonowi np.
192.168.1.100 - Na komputerze otwórz terminal (na Windowsie użyj Putty) i połącz się z telefonem:
ssh root@192.168.1.100 - poczekaj chwilę – generuje się klucz
- zaakceptuj klucz dla komputera jak nie zapyta też ok
- zaloguj się hasłem:
alpine - zmiana hasła poleceniem:
passwd
Instalacja oprogramowania na telefonie
Po zainstalowaniu OpenSSH i zalogowaniu się, czas na zainstalowanie paru programów na iPhonie. Na początku potrzebujemy narzędzie do odświeżania stanu pulpitu telefonu. W tym celu instalujemy uicache, pnownie uruchamiając aplikację Cydia:
- przejdź na zakładkę Search
- Wpisz UIKit Tools
- Naciśnij Install
Następnym programem do zainstalowania jest ldid, który będzie podpisywał stworzony przez nas kod. Instalację przeprowadzimy w konsoli (po zalogowaniu się na telefon) wydając polecenie apt-get install ldid.
Tworzenie nowego projektu
W celu stworzenia naszej pierwszej aplikacji musimy uruchomić środowisko XCode oraz stworzyć nowy projekt wybierając z menu File -> New Project, z możliwych projektów wybierz iPhone -> View Based. Z głównego okna wybierz plik nazwa_aplikacji.xib i kliknij na nim dwukrotnie.
Otworzy się Interface Builder, w którym możemy dowolnie zmieniać wygląd widoków umieszczonych w projekcie. Pliki *.xib opisują widoki, natomiast IB wspomaga nas w szybkim edytowaniu podstawowego zachowania elementów interfejsu. By wypisać “Hello world” umieścimy najpotrzebniejsze elementy w naszym widoku. Do tego potrzebny będzie Object Inspector, którego wywołamy z menu Window w IB. W oknie aplikacji umieścimy podstawowy widok, by to uczynić przeciągnij z OI ikonkę View do okna aplikacji. Następnie znajdź element Label i przeciągnij go do wcześniej przeciągniętego widoku. Kliknij dwukrotnie na upuszczonym elemencie, a następnie wpisz “Hello World!“.
Uruchomienie projektu
Sprawdź czy aplikacja działa w symulatorze. Projekt można zbudować klikając ikonkę Build and Go albo użyj skrótu Cmd + Enter. Po zbudowaniu się projektu powinien uruchomić się symulator iPhona oraz nasza aplikacja.
Uruchomienie projektu na iPhonie
Przed wprowadzeniem aplikacji do telefonu musimy dokonać jeszcze paru zmian w projekcie XCode. Po pierwsze musimy usunąć nazwę certyfikatu w ustawieniach projektu i tak:
- Uruchom kolejno rozpoczynając od menu: Project -> Edit Project Settings -> Build -> Code Signing -> Any iPhone OS Device.
- Usuń “iPhone Developer” lub inną wartość tam znajdującą się.
- Ustaw parametry Build na: Device|Release (gdy ponownie będziesz chciał użyć symulatora użyj tej listy do zmiany ustawień kompilatora)
- Zbuduj Projekt skrótem Cmd + B.
- Ostatnią czynnością jest przekopiowanie aplikacji oraz podpisanie kodu. By zautomatyzować tę czynnością przygotowałem skrypt na Mac OS X. W poniższym skrypcie zmiany wymagają stałe umieszczone na początku:
- PROJECT_DIR - katalog, w którym umieszczona jest skompilowana wersja aplikacji
- APP – nazwa aplikacji
- IPHONE_IP – IP iPhona. Pamiętaj, żeby przełączyć autoblokadę telefonu na Nigdy w czasie umieszczania aplikacji w telefonie (Ustawienia -> Ogólne -> Autoblokada).
#!/bin/bash PROJECT_DIR="/Users/sparhawk/Documents/helloWorld/build/Release-iphoneos/" APP="helloWorld" IPHONE_IP="10.0.8.202" echo "1/4 - remove old application " ssh root@$IPHONE_IP "rm -r /Applications/$APP.app" echo "2/4 - Copy file - note: If file don't upload - unblock iPhone! " scp -fr $PROJECT_DIR$APP.app root@$IPHONE_IP:/Applications/ echo $PROJECT$APP.app echo "3/4 - Run cmd" ssh root@$IPHONE_IP "cd /; ldid -S /Applications/$APP.app/$APP; su -c uicache mobile; killall SpringBoard" echo "4/4 - END"
Uwagi
Powyższy skrypt będzie wymagał hasła użytkownika za każdym razem, gdy będziesz go uruchamiał. By się z tym uporać wystarczy wygenerować klucz dla komputera, na którym go uruchamiasz. By to wykonać wystarczy:
Na komputerze uruchomić: ssh-keygen -t rsa- pare enterów
- Przekopiuj klucz publiczny z pliku (ścieżkę wypisze
ssh-keygen) ten zrozszerzeniem .pubna koniec pliku (na iphonie):/private/var/root/.ssh/authorized_keys.
Poprzednie części samouczka
Tagi: Apple, interface builder, iphone, iPhone SDK, iphone simulator, JailBreak, Mac OS X, natywne aplikacje iPhone, objective-C, programowanie, programowanie obiektowe, tutorial, tworzenie aplikacji iPhone, windows, xcode







Listopad 19, 2008 o 13:42
Robisz dobrą robotę stary ! Znalazłem tu kilka informacji, których poszukiwałem!
Z pewnością będę zaglądał częściej!
Pozdrawiam
Paweł
Listopad 19, 2008 o 18:58
Dzięki za komentarz :)
Niestety dokumentacja Apple nie zawsze wspomaga programistę. A ograniczenia, które były nałożone przez NDA spowodowały brak informacji w internecie:/ Stąd trzeba było dotychczas radzić sobie samemu :(
Styczeń 9, 2009 o 19:04
Świetny, dobrze i co najważniejsze jasno napisany, bardzo przydatny tutorial, także wielkie dzięki, bo na pewno się przyda ;)
Luty 22, 2009 o 12:49
gdzie mam wpisac ten skrypt?? w putty? czy stworzyc jakis plik??
Luty 22, 2009 o 12:57
Jeżeli chodzi o ten ostatni skrypt. To uruchamiam go na komputerze, a on po ssh przegrywa odpowiednie pliki oraz wykonuje odpowiednie czynności, by aplikacja pojawiła się na iPhonie.
Luty 22, 2009 o 13:08
no wlasnie ale chodzi mi o to jak go uruchamiasz?? zapisujesz z jakims rozszezeniem np. .bat i wtedy uruchamiasz? Na windowsie czy na macu?
Luty 22, 2009 o 13:16
Uruchamiam go na macu. Czyli
chmod +x skrypt
./skrypt
Na windowsie tak łatwo nie będzie. Bo część poleceń trzeba robić ręcznie na iPhonie.
Luty 28, 2009 o 15:05
a jak nie mam wifi na macu? jak wgrac aplikacje z poziomu windows? moglbys to opisac?
Luty 28, 2009 o 18:19
Ten skrypt na końcu to tylko ułatwienie. Pliki możesz przegrać wykorzystując program WinSCP, a połączyć się z telefonem możesz za pomocą putty. Nie mniej wifi jest i tak Ci potrzebne. Tego nie obejdziesz.
Putty jest ci potrzebne, żeby za każdym razem wykonać na iPhonie polecenia:
cd /
ldid -S /Applications/$APP.app/$APP;
su -c uicache mobile;
killall SpringBoard
Marzec 1, 2009 o 10:26
dzieki;) jestes wielki;)
Marzec 8, 2009 o 13:47
nie wiem, nie moge sobie poradzić z tym tutorialem :(
iPhoneOS 2.2.1 pomozesz?
Marzec 8, 2009 o 15:18
Hmm, ale z czym jest problem? Bo po tym co napisałeś niewiele mogę Ci pomóc
Maj 5, 2009 o 11:06
Witam
Ja za to mam pytanie jak inaczej można wrzucić zrobioną aplikację na iphona, tzn jak legalnie to zrobić, bo pracuje w firmie i jako firma chcemy programować aplikacje pod iphony. Tak żeby nie łamać zabezpieczeń to pewnie trzeba ostro zapłacić dla Aplle czy da sie jakoś za free to zrobić?
Maj 5, 2009 o 12:18
Legalnie tylko po zapłaceniu za udział w programie iPhone Developer Program. Z tym, że jako firma polska może to trwać wieki, wymaga wysłania dokumentów i oczekiwania na zgodę. Natomiast firmy z adresem brytyjskim, amerykańskim mogą to zrobić błyskawicznie :)
Lipiec 19, 2009 o 12:12
Witam
Naprawde swietny tutorial. Jest jednak jeden problem z buildem bez Code Signing.
Pod iPhoneOS 2.0 i 2.1 dziala, jednak pod 2.2, 2.2.1 i 3.0 kompilacja konczy sie bledem:
CodeSign error: code signing is required for product type ‘Application’ in SDK ‘Device – iPhone OS 3.0′ – to dla przykladu po kompilacji pod 3.0
Lipiec 19, 2009 o 12:43
Nie testowałem tego na iPhone OS 3.0. Nie miałem już takiej potrzeby ;) Możliwe, że wprowadzili dodatkowe sprawdzenie wraz z nowym SDK ;)
Sierpień 21, 2009 o 18:57
Właśnie, mam podobnie co Mirek :/
Musi być jakiś sposób… Sam będę szukał, ale byłoby miło gdybyś też się w wolnej chwili zainteresował ;) W przeciwnym wypadku tutorial się lekko zdezaktualizuje…
Październik 24, 2009 o 11:41
Czy po złamaniu zabezpieczeń własna aplikacja może uzyskać dostęp do listy połączeń w iPhonie?
Październik 24, 2009 o 16:03
Jeżeli będziesz pisał program tak by wrzucić do AppleStore to obowiązują cię ograniczenia Iphone OS. Natomiast nie wiem jak to jest w “alternatywnych” systemach dla iPhone ;)