Як створити рамку або бібліотеку для інших розробників безпечним способом? [зачинено]


106

У нас є ідея про рамки або бібліотеку, яка буде дуже корисною для будь-якого розробника iOS. Тож ми серйозно думаємо про перехід від розробки додатків до розробки рамки / бібліотеки.

Але коли ми хочемо платити за бібліотеку / фреймворк, ми повинні якось захистити код. Як ми можемо побудувати рамку таким чином, щоб користувач нашої рамки не міг бачити вихідний код, подібно до того, як ми не бачимо вихідний код фреймворків Apple? Вони посилають лише файли заголовків і якийсь дивний файл Unie exe зі скомпільованою рамкою.

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


22
Файл Unix exe :-)
Бесі

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:!

Чи буде мій код видимим для інших? Відповідь: Ні. Ця рамка експортує складений двійковий код, тому кожен може побачити всередині нього. Ви можете зробити те ж саме для деяких інших файлів, як XIB.

Навіщо мені це потрібно? A: Це для розробників / команд, які хочуть ділитися кодами, не показуючи весь код (файли .m / .c / .cpp). Крім того, це для тих, хто хоче організувати зібраний код + ресурси (зображення, відео, звуки, XIB, пліст тощо) в одне єдине місце. І це також для тих команд, які хочуть працювати разом над однією базою (рамкою).

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


1
Дякую, друже! Apple не відхилить додаток через цю хитрість? Ви насправді отримали додаток, затверджений в App Store, який використовував таку основу?
Гордий член

3
Тільки для того, щоб повернутися до цього, оскільки прапор Xcode 4 -all_load linker у налаштуваннях "Інші прапорці Linker" не потрібен. -ObjC - це єдиний прапор, який вам потрібен.
Даніель

Ви правий Даніель, одна з останніх версій LLVM / Clang виправила це. Дякую!
Джей Пейер

Любіть посилання github до iOS Framework, +1
sbonami

Примітка. Якщо у вас є Xcode 4.5, вам знадобиться невелика зміна підручника, як це зафіксовано тут: stackoverflow.com/questions/13571080/…
Lolo


9

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


чи знаєте ви про проекти, які були випущені цим методом?
Томен

Ні, я ні. Я працюю над тим, що ми думаємо випустити таким чином, але я не впевнений, чи з цим ми підемо врешті-решт.
Грег
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.