Информации на русском языке о разработке под джеилбрэйкнутую iOS не так уж и много, так что надеюсь эта информация кому-нибудь пригодится.
Для написания приложений под джеилбрэйкнутые устройства придумано много фрэймворков и наборов утилит. Например iOSOpenDev или Theos почти все они позволяют не только создавать приложения, ставить их на устройства, но и аплоадить их в репозитории Cydia.
В статье я расскажу как создать Hello World – приложение с помощью Theos (автор @DHowett)
Итак нам нужен iOS SDK, но если вы заинтересовались этой темой, то догадываюсь, что он уже у вас стоит, если нет- скачиваем developer.apple.com/devcenter/ios/index.action
Для начала установим переменную окружения, благодаря которой мы будем знать где theos установлен. В терминале набираем:
export THEOS=/opt/theos
далее – скачиваем последнюю версию theos с помощью git:
git clone git://github.com/DHowett/theos.git $THEOS
или svn:
svn co http://svn.howett.net/svn/theos/trunk $THEOS
Далее нам потребуется утилита ldid. Она симулирует процесс подписывания бинарников. Ее можно найти много где, например скачать из dropbox папки товарища @DHowett:
curl -s http://dl.dropbox.com/u/3157793/ldid > $THEOS/bin/ldid
chmod +x $THEOS/bin/ldid
Еще нам потребуется утилита dpkg, ее можно поставить из любых портов для мака, например
brew install dpkg
Итак, подготовительные работы закончились, приступаем.
Создаем новый проект с помощью утилиты new instance creator, выберем 1 — iphone/application:
$THEOS/bin/nic.pl
NIC 1.0 - New Instance Creator<
------------------------------
[1.] iphone/application
[2.] iphone/library
[3.] iphone/preference_bundle
[4.] iphone/tool
[5.] iphone/tweak
Choose a Template (required): 1
Project Name (required): HelloWorld
Package Name [com.yourcompany.helloworld]: com.code.monkey
Author/Maintainer Name [Max]: Max
Instantiating iphone/application in helloworld/...
Done.
Это создаст в текущей папке подпапку helloworld с шаблоном приложения. В ней вы можете найти папку Resources, в которой находится info.plist нашего приложения. Так-же здесь присутствует файл control, с описанием приложения в Cydia репозитории
Package: com.code.monkey
Name: HelloWorld
Depends:
Version: 0.0.1
Architecture: iphoneos-arm
Description: An awesome application!
Maintainer: Max
Author: Max
Section: Utilitie
Исходники нашей программы – файлы
HelloWorldApplication.m
RootViewController.h
RootViewController.mm
main.m
Так-же утилита nic создаст в папке проекта симлинк на установленный theos. И, собственно Makefile, с помощью которого мы будем собирать и аплоадить нашу программу.
Содержимое сгенерированного Makefile
include theos/makefiles/common.mk
APPLICATION_NAME = HelloWorld
HelloWorld_FILES = main.m HelloWorldApplication.mm RootViewController.mm
HelloWorld_FRAMEWORKS = UIKit CoreGraphics
include $(THEOS_MAKE_PATH)/application.mk
Где APPLICATION_NAME – имя нашего приложения. Без надобности лучше его не менять.
[applicationName]_FILES – список наших исходников. Сюда нужно будет добавлять все *.m и *.mm файлы.
[applicationName]_FRAMEWORKS – сюда добавляем список всех фреймворков, которые использует наша программа, например UIKit Foundation CoreGraphics QuartzCore
Пробуем собрать наш HelloWorld с помощью команды make, должно получится что-то такое:
make
Making all for application HelloWorld...
Compiling main.m...
Compiling HelloWorldApplication.mm...
Compiling RootViewController.mm...
Linking application HelloWorld...
Stripping HelloWorld...
Signing HelloWorld...
Для того, чтобы установить наше приложение на устройство и протестировать на нем, нам нужно установить 3 переменные окружения:
export THEOS=/opt/theos/ # уже должна быть установлена
export SDKVERSION=5.1 # версия вашего iOS SDK
export THEOS_DEVICE_IP=192.168.73.154 # IP адрес нашего устройства,
# должен быть в одной сети с вашим маком
Чтобы собрать пакет с нашим приложением набираем в терминале
make package.
после чего в папке проекта появится deb-пакет com.code.monkey_0.0.1-1_iphoneos-arm.deb. его уже можно скопировать на устройство с помощью sftp и поставить используя мобильный терминал
dpkg -i com.yourcompany.fooproject_0.0.1-1_iphoneos-arm.deb
но можно сделать проще, набрав в терминале
make package install
В течении установки вам предложат ввести пароль SSH.
После чего нужно перезагрузить springboard на устройстве, например нажав “Respring” в SBSettings. Или перезагрузить устройство, после чего увидим нашу программу и сможем ее запустить.
В принципе это все, что нужно для написания приложения. Eсть минусы – отсутствие интерфейс-билдера и симулятора
Автор: code_monkey