Jak w bezpieczny sposób zbudować framework lub bibliotekę dla innych programistów? [Zamknięte]

106

Mamy pomysł na framework lub bibliotekę, która będzie bardzo pomocna dla każdego programisty iOS. Dlatego poważnie myślimy o przejściu od tworzenia aplikacji do tworzenia frameworków / bibliotek.

Ale kiedy chcemy pobierać opłaty za bibliotekę / framework, musimy jakoś zabezpieczyć kod. Jak możemy zbudować framework w taki sposób, aby użytkownik naszego frameworka nie widział kodu źródłowego, podobnie jak nie widzimy kodu źródłowego frameworków Apples? Wydaje mi się, że wysyłają tylko pliki nagłówkowe i dziwny plik exe Uniksa ze skompilowanym frameworkiem.

A jeśli nie jest możliwe stworzenie skompilowanej struktury / biblioteki, z której mogliby korzystać inni programiści iOS bez możliwości kopiowania i wklejania naszych kodów źródłowych, czy istnieje sposób na zaciemnienie kodu obiektywnego c?

Dumny członek
źródło
22
Plik Unix exe :-)
Besi
6
Jeśli naprawdę chcesz być pomocny dla programistów iOS, otwórz to!
Kaan Dedeoglu
4
@KaanDedeoglu - W obu scenariuszach użytkownicy mają zalety i wady. Osobiście wolę niedrogie, zamknięte źródło, wszystko jest dobrze udokumentowane, obsługiwane i po prostu działa w ramach frameworka od otwartego, nieobsługiwanego i nieudokumentowanego frameworka. Rzadko spotykany jest framework open source, który jest właściwie wszędzie blisko dobrze udokumentowany I aktywnie utrzymywany.
ArtOfWarfare

Odpowiedzi:

113

Tak, można budować frameworki, aby użytkownik frameworka nie widział kodu źródłowego.

Zapoznaj się z tymi artykułami (w przeszłości z powodzeniem korzystałem z pierwszego do tworzenia frameworków - późniejsze artykuły są aktualizacjami oryginału):

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/

Aby skorzystać z frameworka, użytkownicy po prostu przeciągną pakiet .framework do Xcode. Będą mogli zobaczyć pliki nagłówkowe, które skopiujesz do pakietu (zobacz artykuły powyżej), ale nie źródło (ponieważ nie jest ono uwzględnione - w pakiecie znajduje się tylko skompilowane wyjście).

Może to być również świetny sposób na dystrybucję kodu używanego w wielu projektach w Twojej firmie.


Aktualizacja:

Sprawdź link bez piór dodany poniżej - jest znacznie nowszy i znajduje się na jednej stronie: http://github.com/jverkoey/iOS-Framework . Przedstawia również problemy z kilkoma innymi podejściami. To jest przewodnik, którym teraz kieruję się, próbując przypomnieć sobie, co zrobić, konfigurując nowy framework. :)

Update2 (z wydaniem Xcode 6)

Jest opcja, której szukasz Universal Framework for iOS:!

Czy mój kod będzie widoczny dla innych? O: Nie. Ten Framework wyeksportuje skompilowany plik binarny, aby każdy mógł go zobaczyć. Możesz zrobić to samo dla niektórych innych plików, takich jak XIB.

Dlaczego tego potrzebuję? Odp .: To jest dla programistów / zespołów, które chcą udostępniać swoje kody bez wyświetlania całego kodu (pliki .m / .c / .cpp). Poza tym jest to dla tych, którzy chcą zorganizować skompilowany kod + zasoby (obrazy, wideo, dźwięki, pliki XIB, plist itp.) W jednym miejscu. Dotyczy to również zespołów, które chcą pracować razem powyżej tej samej bazy (struktury).

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

Jay Peyer
źródło
1
Dzięki stary! Apple nie odrzuci aplikacji z powodu tej sztuczki? Czy faktycznie otrzymałeś zatwierdzoną aplikację w App Store, która korzystała z takiego frameworka?
Dumny członek
3
Wracając do tego, od Xcode 4 flaga konsolidatora -all_load w ustawieniu kompilacji „Inne flagi konsolidatora” nie jest wymagana. -ObjC to jedyna flaga, której potrzebujesz.
Daniel
Masz rację Daniel, jedna z nowszych wersji LLVM / Clang naprawiła to. Dzięki!
Jay Peyer
Uwielbiam link github do iOS Framework, +1
sbonami
Uwaga: jeśli masz Xcode 4.5, będziesz potrzebować niewielkiej modyfikacji samouczka, jak opisano tutaj: stackoverflow.com/questions/13571080/…
Lolo
9

Istnieje również szablon dla XCode 4 , który pozwoli Ci tworzyć statyczne projekty ramowe iOS.

Greg
źródło
czy znasz projekty, które zostały wydane tą metodą?
Tomen
Nie, ja nie. Pracuję nad takim, który myślimy o wydaniu w ten sposób, ale nie jestem pewien, czy na tym ostatecznie pójdziemy.
Greg,