Как создать фреймворк или библиотеку для других разработчиков, безопасный способ?

У нас есть идея для платформы или библиотеки, которая будет очень полезна для любого разработчика iOS. Поэтому мы серьезно задумываемся о переходе от разработки приложений к разработке инфраструктуры/библиотеки.

Но когда мы хотим взимать плату за библиотеку/фреймворк, мы должны каким-то образом защитить код. Как мы можем создать структуру таким образом, чтобы пользователь нашей инфраструктуры не мог видеть исходный код, подобно тому, как мы не можем видеть исходный код рамок яблок? Думаю, что они только отправляют файлы заголовков и какой-то странный exe файл Unix с скомпилированной фреймворком.

Или, если невозможно создать скомпилированную фреймворк/библиотеку, которую могут использовать другие разработчики iOS, не имея возможности скопировать и скопировать наши исходные коды, есть ли способ обфускать код objective-c?

Ответ 1

Да, можно создавать фреймворки, чтобы пользователь фреймворка не мог видеть исходный код.

Ознакомьтесь с этими статьями (я успешно использовал первый для создания фреймворков в прошлом - более поздние статьи - это обновления к оригиналу):

http://www.drobnik.com/touch/2010/04/making-your-own-iphone-frameworks/

http://www.drobnik.com/touch/2010/05/making-your-own-iphone-frameworks-in-xcode/

http://www.drobnik.com/touch/2010/10/embedding-binary-resources/

Чтобы использовать фреймворк, ваши пользователи просто перетаскивают пакет .framework в Xcode. Они смогут увидеть файлы заголовков, которые вы копируете в пакет (см. Статьи выше), но не источник (поскольку он не включен - только компилируемый вывод находится в комплекте).

Это также может быть отличным способом распространения кода, который используется для нескольких проектов в вашей компании.


Обновление:

Посмотрите ссылку, добавленную ниже: гораздо более свежий и все на одной странице: http://github.com/jverkoey/iOS-Framework. В нем также излагаются проблемы с рядом других подходов. Это руководство, которому я теперь следую, когда пытаюсь вспомнить, что нужно делать при создании новой структуры.:)

Update2 (с выпуском Xcode 6)

Существует вариант, который вы ищете: Universal Framework for iOS!

Будет ли мой код видимым для других? A: Нет. Эта платформа будет экспортировать скомпилированный двоичный файл, чтобы каждый мог видеть внутри него. Вы можете сделать то же самое для некоторых других файлов, таких как XIB.

Зачем мне это нужно? A: Это для разработчиков/команд, которые хотят делиться своими кодами без отображения всего кода (файлы .m/.c/.cpp). Кроме того, для тех, кто хочет организовать скомпилированный код + ресурсы (изображения, видео, звуки, XIB, plist и т.д.) В одном месте. И это также для тех команд, которые хотят работать вместе над одной базой (фреймворком).

(c) http://blog.db-in.com/universal-framework-for-ios/

Ответ 2

Это руководство немного более современно для создания статических фреймворков iOS:

https://github.com/jverkoey/iOS-Framework

Ответ 3

Существует также шаблон для XCode 4, который позволит вам создавать статические каркасные проекты iOS.