Ocultar código en la biblioteca estática (iOS Obj-C)

Estoy trabajando para crear una biblioteca estática de iOS que deseo vender. He recorrido los pasos para las comstackciones iniciales y he generado la salida .a / .h.

Cuando incluyo estos files en un proyecto separado, no veo ninguna forma de explorar los contenidos en el file .a.

SIN EMBARGO, cuando una línea de código en mi biblioteca bloquea la aplicación (como dije, todavía está en desarrollo), el depurador muestra todo el file de class (.m). ¿Qué pasa con esto?

Realmente no entiendo qué pasa con las bibliotecas estáticas, y no estoy seguro de haber comstackdo esa versión tanto para el simulador como para el dispositivo. ¿Podría eso tener algo que ver con eso? Si es así, ¿alguien podría explicar por qué?

¡¡¡Gracias!!!

No se preocupe, su código fuente no está incluido en el file (.a).

Xcode es lo suficientemente inteligente como para encontrar el file de código fuente en su computadora, según la información de debugging incrustada en el file. Si construye la biblioteca con la configuration "Liberar" (o, de lo contrario, modifica la configuration de compilation de modo que los símbolos de debugging se eliminan) y no tienen la fuente en ninguna parte de la máquina, un desarrollador tendrá que recurrir a su conocimiento de x86 o ARM assembly para descubrir cómo funciona su código.

Por cierto:

  • Dado que una gran cantidad de Objective-C se maneja en time de ejecución, una gran cantidad de nombres de class y nombres de selectores estarán visibles en su biblioteca. Así es como funciona. Puedes intentar ofuscarlo, pero creo que es mejor que pases el time escribiendo un código más útil para vender.

  • Si desea proporcionarle a las personas una biblioteca estática para el desarrollo de iOS, querrá comstackr versiones para iOS Simulator (x86) y iOS Device (arm) y luego usar lipo para combinarlas en una sola biblioteca estática de grasa. Busque alnetworkingedor de "lipo xcode fat static library" para diferentes forms de hacer esto. Algunas soluciones son más intrincadas que otras.

Tuve el mismo problema. @Benzado tiene razón sobre lo que ha mencionado. Pero tuve que eliminar los símbolos de debugging para resolver el problema. Para hacerlo, tuve que cambiar la configuration de Build de la biblioteca de proyecto antes de comstackr como se menciona a continuación.

Seleccione su objective y vaya a Configuración de compilation . Conjunto

  1. ' Tirar símbolos de debugging durante la copy ' a
  2. ' Formato de información de debugging ' a ' DWARF con file dSYM '
  3. ' Generar símbolos de debugging ' a ' NO '
  4. ' Símbolos ocultos por defecto ' a ' '

Para ver para qué sirven, consulte Referencia de configuration de Apple Build

Y construya la biblioteca usando la configuration "Liberar". Esto funcionó para mí.

Si tiene un proyecto para la biblioteca estática con todos los files .m en su computadora, cada copy de esta biblioteca (file .a) se simbolizará con su file .m mientras se depura en xCode.

xCode no busca el file .m apropiado en todo su disco. Conoce el lugar del proyecto original. Entonces, si distribuye solo una biblioteca, oculta completamente su código inicial.

Para asegurarse de que puede copyr su biblioteca en algún proyecto nuevo, borre el file .m en el proyecto de la biblioteca. A partir de este momento cualquier bash de depurar los methods de la biblioteca dará un file vacío en la pantalla.

introduzca la descripción de la imagen aquí