Развертывание приложений iOS в / Applications из XCode с помощью сценария фазы сборки?(Джейлбрейк) - PullRequest
5 голосов
/ 19 сентября 2011

Я занимаюсь разработкой приложения Cydia. Он был в разработке некоторое время, и у меня никогда не было проблем до недавнего времени, когда я возобновил разработку через несколько месяцев. Есть несколько вещей, которые изменились с тех пор, как я работал над ним в последний раз:

  1. Улучшено до Льва
  2. Перемещено в Xcode 4
  3. Обновлен до 4.3.5 на моем iPad, iPhone до 5.0

Из проведенного мною исследования я пришел к выводу, что в моей старой установке было что-то "необычное". Я обнаружил, что подготовленные приложения помещаются в «изолированную папку» /private/var/mobile/Applications, а системные приложения, которые получают доступ для чтения ко всей файловой системе, входят в /Applications. Я предполагаю, что используя обновленные инструменты и Lion, я сломал все, что давало мне общесистемные права на чтение. Итак, мне нужна информация о том, как заставить Xcode развернуться непосредственно в системный каталог без песочницы.

Хотя есть несколько предостережений. Я не хочу использовать установщик, я хочу, чтобы Xcode делал это автоматически после сборки и запуска. Я также хочу иметь возможность подключить отладчик, чтобы я мог просматривать консоль.

Может ли кто-нибудь, имеющий опыт в этом, научить меня, как использовать сценарии сборки для создания необходимой магии, чтобы взять подписанный двоичный файл и автоматически развернуть его после каждой сборки? Я полагаю, что это действительно возможно, потому что вывод на консоль является настолько ценным инструментом, что было бы слишком сложно разрабатывать приложения, подобные самой Cydia.

Спасибо за помощь!

Ответы [ 3 ]

4 голосов
/ 29 сентября 2011

Общее мнение сообщества состоит в том, что это нежелательно. Система сборки, такая как Theos в сочетании с GDB на устройстве и пакетом системного журнала или deviceconsole - вот что используют многие.

2 голосов
/ 27 августа 2012

Я добавил скрипт в качестве фазы пользовательской сборки. Сценарий подписывает приложение, создает пакет, копирует его на телефон и устанавливает его.

Фаза сборки - «Запустить скрипт» с / bin / sh, и я добавил «$ {PROJECT_DIR} /MyApp/install.sh»

Ниже приведены сценарии (очень простые - без обработки ошибок) (замените их соответствующими значениями):

(LatestBuild - это ссылка на каталог сборки) (ldid устанавливается вместе с проектом iosopendev)

cd $HOME/Projects/iPhone/MyProject/MyApp
cp -r ../LatestBuild/MyApp.app com.test.MyApp/Applications/ 
ldid -S com.test.MyApp/Applications/MyApp.app/MyApp
rm com.test.MyApp.deb 2>&1
/opt/local/bin/dpkg-deb -b com.test.MyApp
scp com.test.MyApp.deb root@192.168.0.10:/var/root
ssh root@192.168.0.10 "dpkg -r com.test.MyApp"
ssh root@192.168.0.10 "dpkg -i com.test.MyApp.deb"
ssh root@192.168.0.10 "killall -9 MyApp"
#ssh root@192.168.0.10 "killall -HUP SpringBoard"
cd -

Это может быть улучшено много - но это просто работает для моих нужд

0 голосов
/ 04 октября 2011

Я не очень хорошо разбираюсь в xcode, но, как и в большинстве IDE, я предполагаю, что в той или иной форме он может быть запущен сценарием посткомпиляции, если вы можете выяснить, что это такое же простое, как команда scp для загрузки.оттуда вы можете использовать ldid -S nameofapp в директории, в которую загружено приложение.

Вы можете, если хотите, чтобы ваше приложение находилось в / Applications, хотя обновление до 4.3.5, скорее всего, вынуждает вас использовать привязанный джейлбрейк. Я не знаю о непривязанном JB для 4.3.5, так что это создает трудности.если вам придется перезагрузить компьютер.

Поскольку отладчики дают GDB (вы можете получить его из Cydia), это действительно полезно :).Что я могу сделать, так это просто запустить xcode сценарий пост-сборки, чтобы использовать scp для загрузки на ваше устройство, а затем подписать его вручную с помощью ldid. Это самый простой способ, о котором я могу подумать, если у вас нет доступа к идее разработчика.

Дайте мне несколько минут. Я напишу сценарий и попытаюсь описать, как он работает. Мне нужен кто-нибудь, так как я наконец-то получил работающий в основном открытый набор инструментов.:)

Простой скрипт загрузки

#!/bin/bash
scp -r $1 $2@$3:$4

$1 is lets say your app folder ill use my dpatcher as an example

$2 is user name either mobile or root(if you upload as root you need to chmod permissions to 755)

$3 is your idevices local ip(ie your routers ip for it) 

Вы можете найти свой ip с помощью sbsettings или перейдя в настройки, нажмите синюю стрелку рядом с вашим AP, и он скажет вам.

$4 is where you want it to be most likely /Applications or /var/mobile/Applications

я назвал его upload.sh, но вы можете назвать его как угодно

Пример

upload.sh dpatcher.app mobile@192.168.1.65 /Applications

Тогда все, что вы делаете, это входите в ssh и подписываете его ldid -S nameofapp

Если вы хотите загрузить отдельные файлы, удалите -r как рекурсивную загрузку (т. Е. Папки)

причина, по которой вы должны использовать scp или sftp для загрузки файлов, заключается в том, что обычный ftp AFAIK неподдерживается без использования сторонних приложений.

Я не уверен, как интегрироваться с XCode. Я делаю все с помощью vi, emacs или nano (и у меня нет Mac).

...