¿Cómo crear un marco o biblioteca para otros desarrolladores de forma segura? [cerrado]

106

Tenemos una idea para un framework o biblioteca que será muy útil para cualquier desarrollador de iOS. Así que estamos pensando seriamente en cambiar del desarrollo de aplicaciones al desarrollo de marcos / bibliotecas.

Pero cuando queremos cobrar por la biblioteca / marco, debemos proteger el código de alguna manera. ¿Cómo podemos construir un marco de tal manera que el usuario de nuestro marco no pueda ver el código fuente, de manera similar a como nosotros no podemos ver el código fuente de los marcos de Apples? Solo envían los archivos de encabezado y algún extraño archivo exe de Unix con el marco compilado, supongo.

O si no es posible crear un marco / biblioteca compilado que otros desarrolladores de iOS puedan usar sin poder copiar y pegar nuestros códigos fuente, entonces ¿hay alguna manera de ofuscar el código objetivo-c?

Miembro orgulloso
fuente
22
Archivo exe de Unix :-)
Besi
6
Si realmente quieres ayudar a los desarrolladores de iOS, ¡hazlo con código abierto!
Kaan Dedeoglu
4
@KaanDedeoglu: existen ventajas y desventajas para los usuarios en ambos escenarios. Personalmente, prefiero un marco de código cerrado a un precio razonable, todo está bien documentado, respaldado y simplemente funciona a un marco de código abierto, no respaldado e indocumentado. Es raro el marco de código abierto que en realidad está bien documentado Y mantenido activamente.
ArtOfWarfare

Respuestas:

113

Sí, es posible construir marcos para que el usuario del marco no pueda ver el código fuente.

Consulte estos artículos (he utilizado con éxito el primero para crear marcos en el pasado; los artículos posteriores son actualizaciones del original):

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/

Para usar el marco, sus usuarios simplemente arrastrarían el paquete .framework a Xcode. Podrán ver los archivos de encabezado que copia en el paquete (consulte los artículos anteriores), pero no la fuente (ya que no está incluida, solo la salida compilada está en el paquete).

Esta también puede ser una excelente manera de distribuir código que se usa para múltiples proyectos dentro de su empresa.


Actualizar:

Echa un vistazo al enlace sin plumas añadido a continuación: es mucho más reciente y está todo en una página: http://github.com/jverkoey/iOS-Framework . También establece los problemas con varios otros enfoques. Esta es la guía que sigo ahora cuando trato de recordar qué hacer al configurar un nuevo marco. :)

Update2 (con la versión Xcode 6)

Hay una opción, exactamente la que estás buscando Universal Framework for iOS:!

¿Mi código será visible para otros? R: No. Este Framework exportará un binario compilado, para que cualquiera pueda verlo dentro. Puede hacer lo mismo para algunos otros archivos, como XIB.

¿Por qué necesito esto? R: Esto es para desarrolladores / equipos que desean compartir sus códigos sin mostrar el código completo (archivos .m / .c / .cpp). Además, esto es para quienes desean organizar código compilado + recursos (imágenes, videos, sonidos, XIB, plist, etc.) en un solo lugar. Y esto también es para aquellos equipos que quieran trabajar juntos por encima de la misma base (marco).

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

Jay Peyer
fuente
1
¡Gracias amigo! ¿Apple no rechazará una aplicación por este truco? ¿De verdad consiguió una aplicación aprobada en la App Store que utilizaba dicho marco?
Miembro orgulloso
3
Solo para volver a esto, a partir de Xcode 4, no se requiere el indicador del vinculador -all_load en la configuración de compilación "Otros indicadores del vinculador". -ObjC es la única bandera que necesita.
Daniel
Tienes razón Daniel, una de las versiones más recientes de LLVM / Clang solucionó esto. ¡Gracias!
Jay Peyer
Me encanta el enlace de github al marco de iOS, +1
sbonami
Nota: Si tiene Xcode 4.5, necesitará una pequeña modificación al tutorial como se documenta aquí: stackoverflow.com/questions/13571080/…
Lolo
9

También hay una plantilla para XCode 4 que le permitirá crear proyectos de marco estático de iOS.

Greg
fuente
¿Conoces proyectos que se hayan lanzado con este método?
Tomen
No, no quiero. Estoy trabajando en uno que estamos pensando en lanzar de esta manera, pero no estoy seguro de si es con lo que iremos al final.
Greg