iPhone OS – tutorial część 3

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

26 myśli nt. „iPhone OS – tutorial część 3

  1. Pingback: iPhone OS - tutorial część 2 | Sparhawk

  2. Pingback: iPhone OS - tutorial część 1 | Sparhawk

  3. Pingback: iPhone OS - tutorial część 3 » iPhone Tricks

  4. Paweł

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

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

    Pozdrawiam

    Paweł

  5. sparhawk Autor wpisu

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

  6. endrju_sdr

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

  7. sparhawk Autor wpisu

    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.

  8. rosol

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

  9. sparhawk Autor wpisu

    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.

  10. michal

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

  11. sparhawk Autor wpisu

    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

  12. ratay-m

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

  13. Marek

    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. sparhawk Autor wpisu

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

    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. sparhawk Autor wpisu

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

    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. sparhawk Autor wpisu

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

  19. JG

    zalogowalem sie z macbooka do iphone.

    po wpisaniu w terminalu: apt-get…
    wyrzuca blad: command not found

    zainstalowalem wczesniej uikit, wiec jaka przyczyna?

  20. sparhawk Autor wpisu

    Prawdopodobnie pominąłeś, któryś krok. Fakt jest taki ze nie robilem tych czynnosci z najnowszym zestawem urzadzen/aplikacji. Cos moglo sie zmienic

  21. A.

    Witam.
    Za cholere nie znajduje mi w Cydii UIKit Tool. Dodałem wiele źródeł. Co mam robić bo już nerwy mi puszczają troche… ? ;/

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *