Pull to refresh

HelloWorld под iOS с jailbreak

Reading time 3 min
Views 8.5K
Информации на русском языке о разработке под джеилбрэйкнутую 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сть минусы – отсутствие интерфейс-билдера и симулятора
Tags:
Hubs:
+8
Comments 5
Comments Comments 5

Articles