iPhoneiPad

трюки и приемы

595

SDK вполне подходит для написания высококачественных приложений для AppStore

За долгое время моего участия в сообществе взломщиков iPhone меня часто спрашивали о том, что я думаю об iPhone SDK. В двух словах, iPhone SDK от Apple предоставляет определенную высокоуровневую функциональность, позволяющую разобраться во всем остальном беспорядке. Глубоко под удобным покрывалом от SDK скрыто сильно дезорганизованное и плохо спроектированное множество библиотек, хотя некоторые из них являются весьма действенными в тех областях, в которых SDK таковым не является.

Без сомнения, SDK вполне подходит для написания высококачественных функциональных приложений для AppStore (если бы это было не так, я упомянул бы об этом). Предоставляемые SDK интерфейсы достаточно неплохо написаны с точки зрения большинства хороших разработчиков, создающих качественное программное обеспечение, однако большинство из них даже не подозревает о той функциональности, которая не доступна им. Для тех же, кто уже попробовал себя в мире открытого кода, iPhone SDK все еще остается предметом споров.

Если вы незнакомы с политикой, окружающей SDK, то должны знать о том, что существуют два множества интерфейсов: предоставляемые SDK и используемые Apple. Хотя между ними и есть некоторое перекрытие, тем не менее, я описал множество классов и библиотек, о которых вы никогда не слышали, в своей книге «iPhone. Разработка приложений с открытым кодом»1. Вы никогда не слышали о них потому, что они недоступны в SDK. Многие из нас на заре появления сообщества взломщиков iPhone открывали их путем прямого взлома операционной системы iPhone.

За долгие недели выгрузки таблиц символов, классов и экспериментирования с пробными версиями, содержащими ошибки, мы выделили геном пакета пользовательского интерфейса iPhone, а также многих других библиотек, включая те из них, которые на сегодняшний день являются частными. Это именно те низкоуровневые API. которые разработчики используют при создании программного обеспечения для iPhone с помощью связки инструментов с открытым кодом, и именно те низкоуровневые API, преимущества которых, как выясняется, используют многие приложения Apple для реализации такой функциональности, которую не могут реализовать использующие SDK приложения.

Эти низкоуровневые API дают преимущество разработчикам, использующим связку инструментов с открытым кодом, перед разработчиками, использующими SDK, и, по моему мнению, предлагают гораздо лучшую среду разработки, нежели SDK от Apple. Многие библиотеки на этом устройстве были без особой шумихи приватизированы, сделав тем самым свою функциональность недоступной для разработчиков, пишущих для AppStore. Совершенно не случайно большая часть этой функциональности оказалась ключевой для создания приложений, которые Apple считает конкурирующими с ее собственными встроенными приложениями. Самым большим ограничением является запрет библиотеки Core Surface, которая дала бы использующим SDK разработчикам возможность выводить необработанные пикселы непосредственно на уровень экрана и использовать графические ускорители. Без этой библиотеки у вас возникнут трудности с производительностью приложений, которым требуется 2D-визуализация. например, видеопроигрыватели, пишущие видеопроигрыватели или высокопроизводительные 2D-игры, как, например, мой бесплатный эмулятор Nintendo.

Кроме того, это ключевая библиотека, требующаяся для написания таких приложений, как Flash или Java™ с любым уровнем производительности. Другое множество API, которого вам будет не хватать, — это возможность взаимодействия с музыкой iTunes. Вот почему SDK-версия Тар Tap Revolution Найта Тру (Nate True) больше не выбирает песни из вашей библиотеки iTunes, и почему отличные музыкальные приложения, подобные SynchStep (которое воспроизводит музыку в ритме ваших шагов), вы можете найти только в хранилищах сторонних фирм. Даже такая простейшая функциональность, как возможность работы в фоне или отображение значков строки состояния, доступна только при использовании API, которые запрещены для приложений, публикуемых в AppStore. Нет необходимости говорить, что компилятор открытого кода для iPhone позволяет вам делать то, что SDK делать не разрешает, что, как считают некоторые, сделано для того, чтобы Apple всегда имела конкурентное преимущество на рынке программного обеспечения для iPhone.

С другой стороны, SDK предоставляет то, в чем открытый код никогда не преуспевал: потенциальная возможность получения огромного дохода. Похоже, разработчики могут преодолеть свою неприязнь к политике Apple, приняв во внимание то неприличное количество денег, которое можно получить от такой большой аудитории потенциальных покупателей, которая имеется, к примеру, у iTunes. AppStore дает денежное вознаграждение тем новаторам, которые пожелают к нему присоединиться. Потенциальный доход, предоставляемый AppStore, дает разработчикам существенное преимущество над сообществом разработчиков открытого кода, даже если ваше приложение окажется слегка ограниченным в своей функциональности.

Исключительно с технической точки зрения компилятор с открытым кодом может создавать приложения, используя как интерфейсы SDK, так и низкоуровневые «частные» интерфейсы, в зависимости от того, какое множество заголовков вам нужно использовать. То же самое верно и относительно Xcode: частные, недокументированные интерфейсы могут быть легко импортированы в ваш проект путем простого указания SDK правильных заголовков. Это дает вам четыре возможных подхода к разработке приложений.

Но самое важное во всем этом заключается в том, что если вы хотите публиковать свои приложения в AppStore, то вы обязаны играть по правилам Apple. Apple не примет к публикации приложение, которое использует частные интерфейсы или библиотеки. По слухам, Apple отклонила даже приложения-фонарики, которые переступили черту и имели смелость попытаться самостоятельно настроить яркость экрана. Если вы являетесь коммерческим разработчиком или разрабатываете программное обеспечение для развертывания внутри своей корпорации, то для вас существует только один путь — использовать санкционированный API.

Но если вы думаете как энтузиаст-разработчик открытого кода и рассматриваете свой код скорее как некую форму искусства, то, возможно, вас больше заинтересует создание программного обеспечения так, как оно и должно создаваться — без каких-либо ограничений и песочниц. В таком случае я рекомендую вам рассмотреть вопрос об использовании не только тех API, описание которых вы найдете в сети, но и множества существующих недокументированных API и библиотек. Сообщество разработчиков с открытым кодом было первым, кто создал общедоступный компилятор и интернет-хранилище программного обеспечения для iPhone-сообщества, которое с радостью принимает великолепные полнофункциональные приложения.

На сегодняшний день мир разработки для iPhone очень страдает от такого разделения. Оба лагеря разработчиков растут, но при этом противостоят друг другу. Многие разработчики разочаровываются тем количеством ограничений, которые имеются в SDK, и утверждают, что они несовместимы с популярными лицензиями на открытый код (такими как GPL), или зачастую кричат о том, что во взломе iPhone не было бы необходимости, если бы Apple открыла свое великолепное устройство.

Я очень хочу, чтобы Apple действительно открыла операционную систему iPhone вместо того, чтобы продолжать создавать такие недоверчивые и явно монополистские ограничения в SDK. Хотя iPhone и является, по сути, самым революционным устройством в истории, тем не менее, Apple подвергается риску нанести убытки как разработчикам, так и потребителям. Простой факт, состоящий в том, что я могу приобрести устройство с гораздо меньшими преградами, нежели iPhone многое говорит о страстном желании Apple все контролировать. Эта же непробиваемая позиция волнует и многих разработчиков, пытающихся разрабатывать программное обеспечение для этой великолепной платформы.

По моему мнению, творчество и инновации разумных разработчиков не должны становиться прихотью производителей устройств. Код является формой самовыражения для многих, и навязывать цензуру на свободу самовыражения — это только добиваться запрета на инновации, если они исходят не из лагеря Apple. Несмотря на все это, я продолжаю благоговеть перед впечатляющими возможностями продуктов Apple и аплодировать их инновациям. Хорошо продуманным является не только SDK, но и последняя версия Objective-C— самый элегантный и ориентированный на разработчика язык, который я встречал до сегодняшнего дня. Apple способна создавать великолепные вещи, и практически все, что касается iPhone, потрясающе. Я надеюсь, что Apple продолжит развивать свой успех, становясь более открытой творчеству и не подавляя инновации, приходящие извне.

04.09.2013
Tittygram
Наверх