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):

  1. Uaktualnij iTunes
  2. Ściągnij Quick Pwn 2.1
  3. Ściągnij odpowiedni firmware
  4. Podłącz iPhona sprawdź w iTunes czy telefon jest widoczny
  5. Rozpakuj QuickPwn
  6. Uruchom QuickPwn.exe
  7. 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:

  1. Uruchom aplikację Cydia na iPhonie
  2. Przejdź na zakładkę Search
  3. Wpisz OpenSSH
  4. Naciśnij Install
  5. Otwórz ustawienia sieci na iPhonie
  6. Sprawdź IP jakie przydzielono telefonowi np. 192.168.1.100
  7. Na komputerze otwórz terminal (na Windowsie użyj Putty) i połącz się z telefonem:ssh root@192.168.1.100
  8. poczekaj chwilę – generuje się klucz
  9. zaakceptuj klucz dla komputera jak nie zapyta też ok
  10. zaloguj się hasłem: alpine
  11. 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:

  1. przejdź na zakładkę Search
  2. Wpisz UIKit Tools
  3. 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.

Wybór pliku Main.xib

Wybór pliku Main.xib

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.

Budowanie projektu

Budowanie projektu

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:

  1. Uruchom kolejno rozpoczynając od menu: Project -> Edit Project Settings -> Build -> Code Signing -> Any iPhone OS Device.
  2. Usuń “iPhone Developer” lub inną wartość tam znajdującą się.

    Ustawienia certyfikatu

    Ustawienia certyfikatu

  3. Ustaw parametry Build na: Device|Release (gdy ponownie będziesz chciał użyć symulatora użyj tej listy do zmiany ustawień kompilatora)

    Budowanie projektu na iPhona

    Budowanie projektu na iPhona

  4. Zbuduj Projekt skrótem CmdB.
  5. 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"
  • I to wszystko :)

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:

  1. Na komputerze uruchomić: ssh-keygen -t rsa
  2. pare enterów
  3. Przekopiuj klucz publiczny z pliku (ścieżkę wypisze ssh-keygen) ten z rozszerzeniem .pub na koniec pliku (na iphonie): /private/var/root/.ssh/authorized_keys.

Poprzednie części samouczka

Tagi: , , , , , , , , , , , , , ,

Komentarzy: 22 to “iPhone OS – tutorial część 3”

  1. Robisz dobrą robotę stary ! Znalazłem tu kilka informacji, których poszukiwałem!

    Z pewnością będę zaglądał częściej!

    Pozdrawiam

    Paweł

  2. 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 :(

  3. Świetny, dobrze i co najważniejsze jasno napisany, bardzo przydatny tutorial, także wielkie dzięki, bo na pewno się przyda ;)

  4. gdzie mam wpisac ten skrypt?? w putty? czy stworzyc jakis plik??

  5. 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.

  6. no wlasnie ale chodzi mi o to jak go uruchamiasz?? zapisujesz z jakims rozszezeniem np. .bat i wtedy uruchamiasz? Na windowsie czy na macu?

  7. 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.

  8. a jak nie mam wifi na macu? jak wgrac aplikacje z poziomu windows? moglbys to opisac?

  9. 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

  10. dzieki;) jestes wielki;)

  11. nie wiem, nie moge sobie poradzić z tym tutorialem :(
    iPhoneOS 2.2.1 pomozesz?

  12. Hmm, ale z czym jest problem? Bo po tym co napisałeś niewiele mogę Ci pomóc

  13. 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ć?

  14. 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 :)

  15. 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

  16. 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 ;)

  17. 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…

  18. Czy po złamaniu zabezpieczeń własna aplikacja może uzyskać dostęp do listy połączeń w iPhonie?

  19. 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 ;)

Trackbacks/Pingbacks

  1. iPhone OS - tutorial część 2 | Sparhawk
  2. iPhone OS - tutorial część 1 | Sparhawk
  3. iPhone OS - tutorial część 3 » iPhone Tricks

Zostaw komentarz

Możesz używać następujących znaczników: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>