2012-06-14 9 views
44

Estamos creando una aplicación para otra empresa. Mantienen la clave de firma y prefieren no compartirla con nosotros.Creación de aplicaciones iOS utilizando xcodebuild sin codesign

Debería ser posible separar compilación y signo, pero ¿cómo lo especifico en la línea de comando de xcodebuild?

EDIT para los que vienen desde la búsqueda. La respuesta aceptada es correcta: hace lo que pide la pregunta. Sin embargo,, el panorama general es separando compilación y codesign (permitiendo que un desarrollador que no tenga la clave de distribución para compilar la aplicación). Las versiones más nuevas de Xcode proporcionan las herramientas para eso. Esto no es estrictamente una respuesta a esta pregunta, así que lo publiqué como una esencia: https://gist.github.com/noamtm/5c3aaa0b615477162ccd.

+0

¿Es esto lo que estás buscando? http://cydia.saurik.com/codesign.html – QED

+0

Después de cambiar la configuración, así es como se verifica si el paquete de la aplicación está firmado o no: 'codesign -dv/Applications/AppName.app' – Daniel

Respuesta

96

Con el fin de omitir la firma de código se puede realizar una compilación manual desde la consola de la siguiente manera:

xcodebuild clean build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO 

uso, además, los parámetros -configuration, -target y -sdk con el fin de definir los valores de creación.

Consulte este stackoverflow answer para obtener una descripción detallada de cómo deshabilitar la firma de código dentro de Xcode.

+0

Gracias. Aún no lo he probado, pero tiene sentido. – noamtm

+5

Esto funciona, pero el problema es que no es posible generar los archivos requeridos de los Derechos y las Reglas de Recurso que se necesitan para el comando 'codesign --entitlements ... --resource-rules ...'. Esto es particularmente importante si tiene la intención de usar iCloud. No es trivial generar estos archivos usted mismo. Ver también http://stackoverflow.com/questions/9280130/how-to-call-builtin-productpackagingutility-in-command-line. – Alexander

+1

gracias, gracias GRACIAS GRACIAS – liang

8

Desafortunadamente, puede ser difícil crear su aplicación en modo de lanzamiento sin la firma del código. Obtendrá errores del sistema de formación como ésta:

CodeSign error: code signing is required for product type 'Application' in SDK 
       'iOS 5.1' 

En este caso, debe configurar el objetivo de usar el comodín desarrollador/equipo (*) la identidad de firma en modo de lanzamiento. La aplicación se firmará con eso cuando la construyas, y puedes enviarla a tu cliente para que pueda renunciar. Esto es lo que hacen la mayoría de nuestros desarrolladores subcontratados.

Puede eliminar la información de firma de código eliminando varios archivos en la aplicación como _CodeSignature y utilizando la herramienta codesign para eliminar información del binario de la aplicación. Pero no estoy seguro de lo fácil que es eso. Sin embargo, no es realmente esencial. No hay información confidencial en el perfil de aprovisionamiento o información de firma.

+0

Entonces este sería el proceso para construir un .ipa para enviar a un cliente que está utilizando Citrix/Zenprise para implementar la aplicación a sus empleados? ¿Puedes comentar sobre mi publicación aquí ?: http: // stackoverflow.com/questions/16089918/citrix-receiver-xenapp-xenmobile-zenprise-ipa-provisioning-and-deploying-an – whyoz

3

En Project Navigator, seleccione su proyecto y abra la sección "Configuraciones de compilación" de su proyecto (y no un objetivo en particular).

En "Firma de código", busque "Identidad de firma de código" y para ambos modos de depuración y liberación configure "Cualquier iOS SDK" en "No codificar sesión".

5

para prevenir completamente la firma de código con Xcode 7, he usado todas las siguientes opciones:

CODE_SIGN_IDENTITY="" 
CODE_SIGNING_REQUIRED="NO" 
CODE_SIGN_ENTITLEMENTS="" 
CODE_SIGNING_ALLOWED="NO" 

La última opción, CODE_SIGNING_ALLOWED="NO" parecía hacer el truco.

+0

Solo quería hacer lo mismo Gracias por compartir. –

+0

Nota: No puedo obtener derechos de adición (grupos de aplicaciones) para trabajar en un archivo creado sin ellos, incluso si ejecuto codesign con el archivo de derechos deseado. –

+0

Tenga en cuenta que no haría este truco para compilaciones de archivo. Solo quiero que no me tope con una designación de código cuando ejecuto/pruebo mi aplicación en la depuración en el simulador. Por lo general, la acción de archivo requiere que se le asigne un código para que no lo desactive. –

Cuestiones relacionadas