Zenedith's dev blog

Dałem się namówić.., szatanowi chyba..

Programowanie w objc pod Windows – początek przygody z IPhone?

Bardzo zainteresował mnie temat tworzenia aplikacji (gier) dla IPhone, więc zacząłem poszukiwać na ten temat informacji.

A więc postaram się odpowiedzieć na pytanie: „Jak zacząć przygodę z programowanie dla IPhone„.

Żeby programować dla IPhone potrzebny jest Mac, albo przynajmniej jego emulacja (czego nie polecam i nie popieram, ponieważ nigdzie nie uzyskamy takiego komfortu pracy jak na oryginalnym sprzęcie Apple).

Ponieważ na własnego Mac’a się jeszcze nie zdecydowałem to oczywistym jest, że żadnej aplikacji na IPhone jeszcze nie skompilowałem..co nie oznacza że nie mam powodów, żeby napisać parę słów na temat programowania i poszukiwania na ten temat informacji.

Zaczynamy od strony apple’a gdzie znajdziemy darmowy SDK dla programowania na IPhone. Można tam znaleźć bardzo dużo informacji o wytwarzaniu aplikacji dla systemów OS X, ale należy być zarejestrowanym.

Rejestracja rozbita jest na dwa „konta”. Jest darmowa i do pierwszej prowadzi  ADC Member Site. Uzyskujemy wtedy dostęp do działu download, w którym możemy znaleźć dużo plików powiązanych w kategorie. Druga, ta bardziej przydatna informacyjnie rejestracja jest dostępna pod linkiem Register. Gdy już utworzymy konto i dostaniemy AppleID, możemy przygotować się ma zatrzęsienie informacji o programowaniu dla IPhone. A wszystkie te informaje widoczne ze strony developer.apple.com/iphone.

Jak się dowiadujemy, obowiązującym w Apple świecie językiem programowania jest Objective – C (objc), od niedawna w jego 2.0 odsłonie. Dowiemy się o nim sporo na stronie Apple, ale można też dowiedzieć się na ten temat z książki „Programming In Objective-C” wydawnictwa Sams z 2003 roku.

Jest napisana niesamowicie prostym językiem i dla bardzo początkujących programistów (którzy dopiero się uczą swojego 1-2 języka programowania). Na stronie autora znajdziemy kody źródłowe przykładów.

Kolejna opcja nauki to portal cocoadevcentral.com, który zawiera mnóstwo ciekawych tutoriali dla programistów systemów Mac OS X. Autor portalu prowadzi swojego bloga pod adresem theocacao.com, gdzie również można się dowiedzieć bardzo wielu ciekawostek ze świata Apple.

Znajdziemy tam m.in krótki artykuł wprowadzający do programowania w Objective – C 2.0, o którym więcej dowiemy się u źródła.

Teoria za nami, praktyka przed nami.

Czy możemy programować w Objective – C bez posiadania komputera Mac oraz systemu Mac OS X?

Oczywiście, musimy tylko wyposażyć się w odpowiednie środowisko programistyczne, jakim jest MinGW lub Cygwin. Ponieważ jestem wielkim fanem MinGW oraz z racji prostoty instalacji środowiska, skupię się na etapie instalacji środowiska dla MinGW.

Kluczowym adresem jest www.gnu.org/software/gnustep, czyli cross-platform projekt GNUstep gdzie znajdziemy biblioteki dla sporej ilości systemów operacyjnych (lista).

Z racji że interesuje nas MinGW dla Windows, pobieramy ze strony www.gnu.org/software/gnustep/experience/Windows.html instalatory:

  1. GNUstep System (download v 0.23),
  2. GNUstep Core (download v0.23)

i instalujemy w tej samej kolejności.

GNUstep System zainstaluje nam MSYS i MinGW z potrzebnymi bibliotekami i narzędziami. Są to najnowsze wersje narzędzi z projektu MinGW – Minimalist GNU for Windows. GCC jest dostarczony w wersji 3.4.5, wersja 4.x jest przygotowywana.

GNUstep Core przygotuje dla MinGW środowisko Mac’owe – nagłówki i biblioteki do kompilacji (do kompilacji prostych programów nie trzeba by tego instalować).

W zależności jakiego IDE będziemy używać do kompilacji objc (o tym za chwilę) musimy wskazać gcc gdzie ma szukać plików nagłówkowych a linker’owi gdzie ma szukać bibliotek.

Jeśli nasze IDE (lub jego brak) nie pozwala na ustawienie dodatkowych ścieżek dla nagłówków i bibliotek, to najprostszym rozwiązaniem będzie przekopiowanie zawartości podkatalogu GNUstep\System\Library\Headers z GNUstep Core do katalogu mingw\include w GNUstep System oraz przekopiowanie zawartości podkatalogu GNUstep\System\Library\Libraries do katalogu mingw\lib.

MSYS to wiersz poleceń symulujący konsolę unix’ową, analogicznie jak jest to w przypadku cygwin’a. Uruchamiając plik msys.bat lub polecenie Shell z menu windowsowego Programy, otrzymamy konsolę, w której poruszamy się jak w systemach *unix’owych (cd, pwd, ls, …).

shell_fstab

Możemy teraz spróbować skompilować jakiś prosty przykład w języku objc, przy użyciu tej konsoli.

Jako edytora użyć możemy vim’a (polecenie vi) lecz dla początkujących użytkowników może to być program „nie do przejścia”. Możemy więc po prostu użyć domyślnego strumienia wejścia jako edytora poprzez użycie polecenia:

cat > prog.m

wpisując treść programu oraz kończąc jego edycje i zapisując plik przez kombinację ctrl+c.

Najprościej  będzie jednak skorzystać z dowolnego edytora, który mamy w systemie Windows i zapisać plik w katalogu instalacji MSYS lub dowolnym innym katalogu, który dodamy do fstab i będzie widoczny dla MSYS (edycja pliku etc\fstab, który można zobaczyć w tle na screenie powyżej).

Przykładowy kod jest następujący:

#import <stdio.h>

int main(int argc, const char *argv[])
{
  printf("Hello world from %s", "Zenedith");
  return 0;
}

Jego kompilacja jest bardzo prosta – używamy znanego kompilatora gcc ze standardową składnią:

gcc prog.m -o prog -l objc

gdzie prog.m to plik z kodem źródłowym – dołączamy tylko bibliotekę objc.

Jako że program nie robi nic specjalnego to mało jest możliwości na jego „wysypanie się”. Jednakże, udało mi się otrzymać błąd, wynikający ze stosowania kodowania utf-8 w pliku źródłowym, przez co symbol # nie był interpretowany poprawnie, zatem trzeba uważać na kodowanie plików.

Należy też zwrócić uwagę na styl kodowania – przy definiowaniu/deklaracji klas i metod nie należy stawiać otwierającego nawiasu ciała klasy/funkcji w tej samej linii co jej nagłówek, tzn. zamiast:

@interface NowaKlasa: Object {

należy zapisać tak:

@interface NowaKlasa: Object

{

Przy pierwszym podejściu do objc byłem tym faktem trochę zaskoczony.

Jeśli kompilacja przebiegła bez błędów, to znaczy że środowisko powinno funkcjonować dobrze.

IDE do programowania Objective – C.

Nie ukrywam, że z przyjemnością sprawdziłbym na co stać Xcode. Może już niedługo się o tym przekonam i podzielę z innymi moimi odczuciami.

Eclipse –  czy jest to IDE dla programowania w objc? Jak wynika m.in. z stąd, nie ma jeszcze pełnego wsparcia dla objc w CDT. Pojawił się projekt objectiveclipse ale prace posuwają się trochę wolno.

Oczywiście można ręcznie skonfigurować środowisko uruchomieniowe ale o narzędziach wspomagających wytwarzanie kodu objc można w tej chwili zapomnieć i traktować Eclipse jako „rozbudowany edytor” z możliwością kompilacji.

Istnieje jeszcze m.in. IDE JGrasp, które można bardzo łatwo skonfigurować do pracy z objc (ma predefiniowane ustawienia, trzeba tylko niektóre uzupełnić) ale ponieważ jest on napisany w javie (potrzebuje JRE min. 1.5) nie zrobił na mnie pozytywnego wrażenia (w porównaniu do Eclipse, który przecież też jest napisany w javie, JGrasp wygląda po prostu topornie).

Ok, to tyle na ten temat w dzisiejszym wpisie.

Reklamy

20 Marzec, 2009 - Posted by | iphone | , ,

3 komentarze »

  1. Bardzo przydatny artykuł dla początkujących takich jak ja. Z niecierpliwością czekam na następne, które mam nadzieje się ukażą.

    Komentarz - autor: Dawid | 2 Kwiecień, 2009 | Odpowiedz

  2. Dzięki, chwilowo zajęty jestem silnikiem Unity, który umożliwia tanim kosztem tworzyć gry na IPhone.
    Gdy już będę miał wyrobione zdanie na ten temat, podzielę się nim ale już mogę stwierdzić, że rokuje bardzo dobrze.

    Komentarz - autor: zenedith | 3 Kwiecień, 2009 | Odpowiedz

  3. Fajna sprawa ja chciałbym dowiedzieć się jak to zrobić na Ubuntu bo od pewnego czasu jestem na tym systemie i z tego co wiem gcc chyba mam. Trochę umiem programować w C++ to też mógłbym się trochę nauczyć w tym Obiective C. Ale jak to potem na app store umieścić np. na początek za free bo mam ipod touch 4g i naprawdę fajna sprawa z tymi grami.

    Komentarz - autor: Adam | 12 Grudzień, 2011 | Odpowiedz


Skomentuj

Proszę zalogować się jedną z tych metod aby dodawać swoje komentarze:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: