Pull to refresh

Comments 5

Буквально пару дней назад пришлось мне обычное приложение разместить в Cydia.
iOSOpenDev на Mountain Lion вообще не установился. Посмотрел логи — не получилось выполнить постисталляционные скрипты. Благо, что есть код на гитхабе, и закончить установку смог, выполнив скрипты вручную.
Установив Theos и увидев ужас, который предлагается в качестве шаблона проекта, тоже плюнул на эту затею.
Так вот, это я к чему. Если вам нужно именно приложение, а не какой-то твик, предлагаю простейший способ собирания .deb пакета.
Разрабатывается обычное приложение в Xcode, с интерфейс-билдером, симулятором, блэкджеком и т.п.
1) После того, как всё готово, подключается устройство и делается Product -> Archive.
2) Из получившегося .xcarchive файла достаётся .app.
3) На диске создаётся папка YourAppName со следующей структурой:
YourAppName/
— Applications/
— DEBIAN/
4) В папке DEBIAN создаётся файл с именем control и схожим содержанием:
Package: com.xxxx.yourappname Name: YourAppName Version: 1.1.0 Depends: firmware (>= 5.0) Architecture: iphoneos-arm Description: A client for soap4.me Depiction: http://yoururl.com Homepage: http://yoururl.com Author: Sviataslau Seviaryn <sviataslau@gmail.com> Sponsor: Apple
5) По желанию можно создать так же исполняемые файлы postinst, prerm, в которых указать команды, которые будут выполнены после установки и перед удалением пакета.
6) Упаковать созданную структуру папок в deb. Можно через тот же iOSOpenDev, который устанавливает за собой консольные приложения для упаковки:
iosod build "только что созданная директория" "директория, куда положить упакованный .deb"
Всё, .deb готов к установке.
Далее то, на что нужно обратить внимание и к чему нужно быть готовым:
1) Для того, чтобы приложение запустилось и работало, оно должно быть подписано. Популярная фишка с выставлением Don't code sign в билд-настройках не сработает. Сертификат можно сгенерировать самому, не обязательно получать его у Apple за 99$. Как это сделать полно туториалов в интернете.
2) Приложение будет установлено в папку /Applications, а не в var/mobile/Applications, куда попадают обычные приложения. Сделать так, чтобы приложение ставилось в var/mobile/Applications мне, например, не удалось.
3) Предыдущий пункт влечёт за собой последствия.
— Если ваше приложение использует Settings.bunle, то настройки в Settings.app вы не увидите. Для таких приложений, как я понял, нужно интегрироваться с PreferenceLoader через MobileSubstrate, что влечёт за собой дополнительный геморрой;
— если вы используете Keychain для сохранения конфиденциальной информации, то он тоже не работает. По крайней мере, приложение, работающее в симуляторе и установленное на девайс обычным образом сохраняет настройки без проблем.
Это пока две проблемы, с которыми мне довелось столкнуться и которые вынудили меня плюнуть на Сидию и распространять приложение в виде ipa, устанавливающегося через iTunes в пару кликов.
Конечно, если ваше приложению нужны какие-то особые функции, то без установки рядом с системными приложениями не обойтись, а если достаточно sandbox'а — ну её, эту Сидию.
Да, мне нужны были именно доступ к системным библиотекам и приватным API. Не стал особо разбираться почему не поставился iOSOpenDev. Эта статья — по сути памятка для себя по установке и настройке theos — первого, что заработало без особых танцев с бубном и камлания над скриптами установки. За содержательный комментарий огромное спасибо, попробую ваш вариант на досуге.
Спасибо! Оба метода применимы, оба в избранное.
Кстати, Вы могли бы написать отдельную статью, более развёрнутую.
Вот про разработку твиков для iPhone. Может быть, пригодится кому-нибудь.
Sign up to leave a comment.

Articles