iPhone Development on Windows Platform quick start how-toUPDATE Nov 2008: Статья касается программирования под Open SDK, Firmware 1.x
Небольшая вводная статья, возникшая как результат собственных изысканий на заданную тему и мыслей, возникших, пока я учился писать под iPhone.
Кому?Эта статья предназначена для практикующих программистов и содержит всего лишь краткий инструктаж на тему "что и где искать" плюс список ключевых слов для поиска. Вы не найдете здесь детального описания что делать, а вместо этого вы найдете описание, что искать в интернете, в каком порядке и что читать для дальнейшего расширения кругозора.
Минимальные системные требования к будущим разработчикам под iPhone
· Опыт программирования на C, C++ или Objective C
· Базовые знания средств разработки и администрирования мира Unix – GCC/C++, Make, SSH, shell, tar, gnu zip и так далее...
Что вам еще понадобится
· iPhone и какой-то опыт его использования
· Cygwin с кросс-компилятором G++ и LLVM (ToolChain)
· Файловая система от iphone с lib файлами для линковки
· Include files от вашей версии фреймворка
· базовые знания Objective C, C++ или plain C
· Аккаунт на Apple Connect, чтобы читать документацию Apple
· Google Code Search, чтобы искать примеры, как что сделать.
· Документация по платформе - Cocoa, WebKit, LayerKit и т.д – ищется по крохам в интернете и же на сайте Apple.
Как пишутся «родные» программы для iPhoneЕсть два основных способа написать для iPhone (я имею в виду, "родные" программы на Objective C – и не рассматриваю варианты типа написания веб приложений или приложения на iUI или ином новомодном фреймворке)
- Либо вы получаете лицензию Apple, покупаете MacBook, качаете официальный iPhone SDK и ставите XCode (IDE для разработки) и становитесь настоящим эпловским разработчиком.
- Либо вы используете open source и всякие неофициальные инструменты, устанавливаете ToolChain (
http://www.mattcutts.com/blog/hack-your-iphone-toolchains-and-cross-compilers/ ) и пишете все с чистого листа в каком-нибудь текстовом редакторе, поддерживающем синтаксис Objective C (для работающих на Windows могу посоветовать Notepad ++)
Windows разработчикам также понадобится специально настроенный Cygwin и всякие полезные инструменты типа WinSCP.
Сам же iPhone должен быть подвергнут процедуре Jailbreak и для работы на него нужно установить BSD tools и SSH.
Что надо сделатьИтак, перво-наперво надо попробовать хоть что-то собрать под iPhone. В качестве вводной документации по платформе можно воспользоваться книжкой "iPhone Open Application Development" (есть на Amazon, встречается в электронном виде). Из нее можно почерпнуть базовые знания, которых будет достаточно, чтобы собрать ваш первый пример. Правда, надо понимать что книга написана для Firmware v1.1 и несколько устарела.
Жизненно важно накачать как можно больше примеров приложений – можно искать на Google Code Repository, Google Code Search а начать, скачав примеры от книги (
http://examples.oreilly.com/9780596518554)
Способу установки ToolChain, описанного в книге, я например предпочитаю вот такой способ:
·
http://wiki.iphonegameover.com/Windows_Cygwin_Binary_Toolchain_InstallationАльтернативный вариант описан на форуме сайта iPhones.ru:
http://www.iphones.ru/forum/index.php?showtopic=4659Затем, если вы программист windows, нужно изучить Objective C :-). В принципе, базовые знания даются в книге Open App Development, но их может не хватить. Как минимум, нужно понять концепции - можно начать с Википедии:
http://en.wikipedia.org/wiki/Objective_c . Еще одна интересная вводная статья про Objective C:
http://cocoadevcentral.com/d/learn_objectivec/Не помешает понять принципы построения Сocoa framework - это можно либо гуглить, либо искать на сайте
http://developer.apple.com/ (там же есть документация по iPhone SDK (
http://developer.apple.com/iphone/ ), которая поможет, поскольку при методе разработки, рекоммендованном Apple, используются все те же фреймворки и библиотеки, что и при кустарном методе
Обазательно прочитайте про Memory Management в Cocoa - там используются ref counters, как в COM-е, но с немного нетипичными нотациями. Читать, например, начиная отсюда -
http://www.stepwise.com/Articles/Technical/2001-03-11.01.html , далее гуглить.
Как искать утечки памяти?Можно почитать вот здесь:
Когда приложение падает с BUS ERROR?SIGBUS, который роняет приложение, возникает от неправедной работы с памятью, например, при использовании (при попытке повторного освобождения) уже освобожденного объекта. 99% что где-то вызывается лишний release или неправильно применено событие autorelease.
Как отлаживаться?Насколько я знаю, нормально отлаживаться можно только в эмуляторе iPhone при использовании iPhone SDK. При «неофициальном» способе я лично использую логгинг (см процедуру NSLog()) и запускаю приложение внутри iPhone из shell.
Возможно, есть способ прикрутить GNU debugger (gdb), но пока я его не познал – буду рад наводящему совету :-)
Интернационализация и локализацияНа блоге weho.ru ребята достаточно подробно рассказывают.
http://blog.weho.ru/2008/04/lokalizacija-prilozhenij-iphon.htmlЕще полезные ссылки·
http://ericasadun.com/ – сайт одного из лучших разработчиков и хакеров iPhone
·
http://cocoadev.com/ – Wiki с документацией по cocoa, UIKit etc
· http://www.iphonedevcentral.org/home.php - множество скринкастов
Удачи в вашей практике!
PS поздравляю, что дочитали до конца - и вот вам небольшой подарок за терпение -
история библиотеки Cocoa и различных KIT-ов на сайте Apple. Оттуда становится понятно происхождение префикса "NS" в назвниях ключевых классов - NSObject, NSString и др.