ios iphone code-signing ipa osx-yosemite

ios - --resource-rules ha quedado en desuso en mac os x>=10.10



iphone code-signing (8)

Intenté renunciar a mi archivo ipa con un nuevo perfil de aprovisionamiento en Mac Os 10.10 con la aplicación iResign, pero recibí esta advertencia: "Advertencia: las reglas de recursos han quedado en desuso en Mac OS X> = 10.10".

¿Qué debería hacer ahora?


Acabo de abrir mi aplicación iOS existente en Xcode 7 GM (de Xcode 6.4) y vi esta advertencia de desaprobación.

Es interesante que las respuestas y los comentarios estén diciendo que se actualice la ''Ruta de reglas de recursos de firma de código'' y que también hagan referencia a las aplicaciones de Mac.

En mi caso, el proyecto tenía esta clave y valor ya establecidos de forma predeterminada (nunca lo configuré). La advertencia se refiere a que las reglas de recursos también están en desuso.

Para mí, eliminar el valor de la ''Ruta de reglas de recursos de firma de código'' eliminó la advertencia. No he enviado una nueva compilación de esta manera, por lo que es posible que deba volver y actualizar esta respuesta.

Solo pensé que era interesante que mi respuesta fuera opuesta a lo que todos los demás estaban viendo.


Desde Xcode 7 , la configuración de compilación de Code Signing Resource Rules Path debe dejarse vacía o, de lo contrario, se generará esta advertencia.

La nota técnica TN2206 proporciona los detalles:

Reglas de recursos

Los sistemas anteriores a OS X Mavericks v10.9 documentaron una característica de firma (--resource-rules) para controlar qué archivos en un paquete deben sellarse con una firma de código. Esta característica ha quedado obsoleta para Mavericks. Las firmas de código hechas en Mavericks y luego siempre sellan todos los archivos en un paquete; ya no es necesario especificar esto explícitamente. Esto también significa que la configuración de compilación de Ruta de reglas de recursos de firma de código en Xcode ya no se debe usar y se debe dejar en blanco.

Por lo tanto, ya no es posible excluir partes de un paquete de la firma. Los paquetes deben tratarse como de solo lectura una vez que se hayan firmado.


Después de Xcode 7, las soluciones anteriores dejaron de funcionar. Rishi Goel señaló uno nuevo (en https://.com/a/32762413/2252465 )

  1. Eliminar CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist
  2. Encuentre el /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication script y actualícelo.
    Encuentra las líneas que incluyen el siguiente código en el script

    my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules", "--sign", $opt{sign}, "--resource-rules=$destApp/ResourceRules.plist");

    cámbielo a:

    my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements", "--sign", $opt{sign});


Encontré una solución : si ejecuta la aplicación iResign desde XCode, entonces renunciará a la aplicación sin problemas (aparecerá una advertencia en la consola en lugar de una ventana emergente). Pero si cierra XCode y ejecuta la aplicación solo, ¡la ventana emergente le responderá!

Por cierto: error encontrado :) La condición

if (systemVersionFloat < 10.9f)

Está roto para Yosemite 10.10. Gracioso.

Gracias,


Haga clic en su proyecto> Objetivos> Seleccione su objetivo> Configuración de compilación>

Code Signing Resource Rules Path

y añadir :

$(SDKROOT)/ResourceRules.plist


Intente agregar los siguientes argumentos en el comando xcodebuild.

-sdk iphoneos CODE_SIGN_RESOURCE_RULES_PATH=''$(SDKROOT)/ResourceRules.plist''


Si comenta los dos parámetros --resource-rules de la lista de argumentos, donde la aplicación iResign llama a la tarea de código, entonces no tiene que cambiar la configuración de compilación del proyecto para el proyecto de la aplicación.

No me gusta la idea de tener que modificar la configuración de compilación para cada proyecto con el que quiero trabajar, solo para poder renunciar.

Reconstruí la herramienta de renuncia y la copié en mi directorio de aplicaciones, para no tener que abrirla en Xcode.


Si está renunciando a la aplicación usando la terminal, incluso puede omitir resource-rules mientras realiza el signo de código, ya que no es necesario especificar externamente qué recurso firmar y cuál no. Ahora es obligatorio firmar todos los recursos dentro del paquete.

Para renunciar a la aplicación usando la terminal, puede seguir los siguientes pasos:

unzip MyApp.ipa rm -rf Payload/MyApp.app/_CodeSignature/ cp ~/Desktop/MyAdHoc.mobileprovision Payload/MyApp.app/embedded.mobileprovision codesign -f -s "iPhone Distribution: Code signing Certificate for Enterprise or Ad-hoc app" Payload/MyApp.app zip -qr MyApp_Resigned.ipa Payload/