Wie erstelle ich ein Framework oder eine Bibliothek für andere Entwickler auf sichere Weise? [geschlossen]

106

Wir haben eine Idee für ein Framework oder eine Bibliothek, die für jeden iOS-Entwickler sehr hilfreich ist. Wir denken also ernsthaft darüber nach, von der App-Entwicklung zur Framework- / Bibliotheksentwicklung zu wechseln.

Aber wenn wir für die Bibliothek / das Framework eine Gebühr erheben möchten, müssen wir den Code irgendwie schützen. Wie können wir ein Framework so erstellen, dass der Benutzer unseres Frameworks den Quellcode nicht sehen kann, ähnlich wie wir den Quellcode von Apples Frameworks nicht sehen können? Sie liefern nur die Header-Dateien und einige seltsame Unix-Exe-Dateien mit dem kompilierten Framework, denke ich.

Oder wenn es nicht möglich ist, ein kompiliertes Framework / eine kompilierte Bibliothek zu erstellen, die andere iOS-Entwickler verwenden können, ohne unsere Quellcodes kopieren und einfügen zu können, gibt es dann eine Möglichkeit, den Objective-C-Code zu verschleiern?

Stolzes Mitglied
quelle
22
Unix exe Datei :-)
Besi
6
Wenn Sie iOS-Entwicklern wirklich hilfreich sein möchten, Open Source!
Kaan Dedeoglu
4
@KaanDedeoglu - In beiden Szenarien gibt es Vor- und Nachteile für Benutzer. Persönlich bevorzuge ich ein preisgünstiges Closed-Source-Framework, alles ist gut dokumentiert, wird unterstützt und funktioniert nur als Open-Source-Framework, nicht unterstützt und nicht dokumentiert. Selten ist das Open-Source-Framework, das tatsächlich bei weitem nicht gut dokumentiert und aktiv gepflegt wird.
ArtOfWarfare

Antworten:

113

Ja, es ist möglich, Frameworks zu erstellen, sodass der Benutzer des Frameworks den Quellcode nicht sehen kann.

Schauen Sie sich diese Artikel an (ich habe den ersten in der Vergangenheit erfolgreich zum Erstellen von Frameworks verwendet - die späteren Artikel sind Aktualisierungen des Originals):

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/

Um das Framework zu verwenden, ziehen Ihre Benutzer einfach das .framework-Bundle in Xcode. Sie können die Header-Dateien sehen, die Sie in das Bundle kopieren (siehe Artikel oben), aber nicht die Quelle (da diese nicht enthalten ist - nur die kompilierte Ausgabe befindet sich im Bundle).

Dies kann auch eine großartige Möglichkeit sein, Code zu verteilen, der für mehrere Projekte in Ihrem Unternehmen verwendet wird.


Aktualisieren:

Schauen Sie sich den unten federlosen Link an - er ist viel aktueller und alles auf einer Seite: http://github.com/jverkoey/iOS-Framework . Es werden auch die Probleme mit mehreren anderen Ansätzen dargelegt. Dies ist die Anleitung, die ich jetzt befolge, wenn ich versuche, mich daran zu erinnern, was beim Einrichten eines neuen Frameworks zu tun ist. :) :)

Update2 (mit Xcode 6 Release)

Es gibt eine Option, nach der Sie genau suchen : Universal Framework for iOS!

Wird mein Code für andere sichtbar sein? A: Nein. Dieses Framework exportiert eine kompilierte Binärdatei, sodass jeder darin sehen kann. Sie können dasselbe für einige andere Dateien wie XIBs machen.

Warum brauche ich das? A: Dies ist für Entwickler / Teams gedacht, die ihre Codes freigeben möchten, ohne den gesamten Code anzuzeigen (.m / .c / .cpp-Dateien). Außerdem ist dies für diejenigen gedacht, die kompilierten Code + Ressourcen (Bilder, Videos, Sounds, XIBs, Plist usw.) an einem einzigen Ort organisieren möchten. Dies gilt auch für Teams, die über derselben Basis (Framework) zusammenarbeiten möchten.

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

Jay Peyer
quelle
1
Danke Kumpel! Apple wird eine App wegen dieses Tricks nicht ablehnen? Haben Sie tatsächlich eine App im App Store genehmigt bekommen, die ein solches Framework verwendet?
Stolzes Mitglied
3
Um darauf zurückzukommen, ist ab Xcode 4 -all_load linker flag in der Build-Einstellung "Other Linker Flags" nicht erforderlich. -ObjC ist die einzige Flagge, die Sie benötigen.
Daniel
Du hast Recht, Daniel, eine der neueren Versionen von LLVM / Clang hat dies behoben. Vielen Dank!
Jay Peyer
Ich liebe den Github-Link zum iOS-Framework, +1
sbonami
Hinweis: Wenn Sie Xcode 4.5 haben, müssen Sie eine kleine Änderung am Tutorial vornehmen, wie hier dokumentiert: stackoverflow.com/questions/13571080/…
Lolo
9

Es gibt auch eine Vorlage für XCode 4 , mit der Sie statische iOS-Framework-Projekte erstellen können.

Greg
quelle
Kennen Sie Projekte, die mit dieser Methode veröffentlicht wurden?
Tomen
Nein, ich nicht. Ich arbeite an einer, die wir auf diese Weise veröffentlichen wollen, aber ich bin mir nicht sicher, ob wir das am Ende tun werden.
Greg