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

106

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

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

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

Гордый член
источник
22
Unix exe-файл :-)
Besi
6
Если вы действительно хотите помочь разработчикам iOS, откройте исходный код!
Каан Дедеоглу
4
@KaanDedeoglu - у пользователей есть свои плюсы и минусы в обоих сценариях. Лично я предпочитаю недорогую платформу с закрытым исходным кодом, все хорошо документировано, поддерживается и просто работает в среде с открытым исходным кодом, неподдерживаемой и недокументированной. Редко можно встретить фреймворк с открытым исходным кодом, который практически хорошо документирован И активно поддерживается.
ArtOfWarfare

Ответы:

113

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

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

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/

Джей Пейер
источник
1
Спасибо друг! Apple не откажется от приложения из-за этого трюка? Вы действительно получили одобренное приложение в App Store, в котором использовалась такая структура?
Гордый участник
3
Чтобы вернуться к этому, с Xcode 4 флаг компоновщика -all_load в настройке сборки «Other Linker Flags» не требуется. -ObjC - единственный флаг, который вам нужен.
Daniel
Вы правы, Даниэль, одна из последних версий LLVM / Clang исправила это. Спасибо!
Джей Пейер,
Люблю ссылку на github на iOS Framework, +1
sbonami
Примечание. Если у вас есть Xcode 4.5, вам потребуется небольшая модификация учебника, как описано здесь: stackoverflow.com/questions/13571080/…
Lolo
9

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

Грег
источник
знаете ли вы о проектах, выпущенных с использованием этого метода?
Tomen
Нет, не знаю. Я работаю над тем, что мы думаем выпустить таким образом, но я не уверен, что мы будем делать это в итоге.
Грег