Разработка настроек Mobile Substrate

У меня есть несколько вопросов о разработке настроек мобильной подложки.
Во-первых, как вы их делаете?

Вы должны использовать XCode?

Какие файлы нужны и где вы размещаете свой код?

Как вы подключаетесь к приложению?

Например, если я хочу что-то изменить в приложении «Сообщения», как я могу запрограммировать его для подключения к Messages.app?

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


person JonasG    schedule 18.08.2011    source источник


Ответы (2)


Безусловно, самым простым способом разработки настроек MS является использование Theos

Следуйте инструкциям по ссылке выше, чтобы установить theos, перейдите в папку, в которой вы хотите сохранить проект, и запустите $THEOS/bin/nic.pl, чтобы создать шаблон для вашего твика.

Сгенерированный файл Tweak.xm — это то место, куда вы помещаете свой код. Чтобы собрать проект, просто перейдите в каталог проекта в Терминале и запустите make. Если в вашей системе есть dpkg, вы можете легко упаковать и установить проект. Убедитесь, что OpenSSH установлен на вашем iDevice, и добавьте эту строку в make-файл вашего проекта:

THEOS_DEVICE_IP = [INSERTDEVICESIPHERE]

Затем запустите make package install, чтобы собрать проект, упаковать его в .deb, перенести на свое устройство и установить.

Код, который на самом деле находится в файле Tweak.xm, написан на Objective-C с языком, упрощающим задачи Mobile Substrate, называемым Logos, который объясняется здесь: http://iphonedevwiki.net/index.php/Logos. Однако, как правило, код имеет следующий формат:

%hook classname //declares the class from your application you're going to override

-(void)functionyouwanttooveride {

    dosomethingnew(); //put all your new code for the method here
    return %orig;     //this calls the original definition of the method and returns the result
}
%end //end hooking classname

Чтобы узнать, какие классы и методы вам нужно переопределить, чтобы делать то, что вы хотите, установите class-dump из cydia, ssh на свое устройство и запустите class-dump -H path/to/your/binary -o /path/where/you/want/your/classheaders. Затем вам просто нужно просмотреть полученные заголовки, чтобы найти классы и методы с именами, которые кажутся соответствующими тому, что вы делаете, и поэкспериментировать с ними.

Удачи!

person stonesam92    schedule 27.08.2011
comment
Спасибо, чувак! Но как я могу узнать functionyouwanttooverride ? Как я могу получить исходный код функции, чтобы я мог его изменить? - person JonasG; 27.08.2011
comment
Не беспокойся! Это сложный момент, у вас нет исходного кода, поэтому вы никогда не сможете увидеть реализацию какой-либо из функций, поэтому вам придется много гадать. Если вы устанавливаете пакет syslogd в /var/log/syslog из cydia, тогда, если вы можете использовать %log в своем коде, он напишет в системный журнал (расположенный в /var/log/syslog), что метод был вызван, и запишите с какими аргументами он был вызван, чтобы дать вам лучшее представление о том, что происходит. Также установите gdb из cydia, и вы сможете установить контрольные точки на интересных методах, чтобы узнать, что происходит. Это сложно, просто продолжайте экспериментировать! - person stonesam92; 28.08.2011
comment
Также обратите внимание, что как только запись в системный журнал включена, многие другие процессы также будут писать в него, и он довольно быстро заполняется и может занимать немного места, поэтому вы можете время от времени удалять его или отключать ведение журнала, когда вам это не нужно, вы можете узнать больше об этом на iphonewiki - person stonesam92; 28.08.2011
comment
хорошо, а что, если я хочу что-то изменить в конкретном приложении, например, добавить кнопку в приложение для фотографий или что-то в этом роде? - person JonasG; 28.08.2011
comment
Не совсем уверен, но я думаю, вам просто нужно подключить представление, к которому вы хотите добавить кнопку, переопределить метод, который ее рисует, и добавить код для рисования собственной новой кнопки. Например, посмотрите, как DarkMalloc добавляет кнопку к UIActionSheet в своей настройке Glue позвонив addButtonWithTitle - person stonesam92; 31.08.2011

Я написал руководство по настройке MobileSubstrate в своем блоге Если вы следуете за ним, я надеюсь, что вы найдете его полезным!

person Andy Ibanez    schedule 06.07.2012
comment
Хороший учебник. Спасибо! - person NightFury; 24.05.2014