Saltar al contenido

Volver a firmar IPA (iPhone)

Solución:

¡Finalmente consiguió que esto funcionara!

Probado con una IPA firmada con cert1 para el envío de la tienda de aplicaciones sin dispositivos agregados en el perfil de aprovisionamiento. Da como resultado una nueva IPA firmada con una cuenta empresarial y un perfil de aprovisionamiento móvil para la implementación interna (el perfil de aprovisionamiento móvil se integra en la IPA).

Solución:

Descomprime la IPA

unzip Application.ipa

Quitar CodeSignature antiguo

rm -r "Payload/Application.app/_CodeSignature" "Payload/Application.app/CodeResources" 2> /dev/null | true

Reemplazar el perfil de aprovisionamiento móvil integrado

cp "MyEnterprise.mobileprovision" "Payload/Application.app/embedded.mobileprovision"

Renunciar

/usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" "Payload/Application.app"

Reempaquetar

zip -qr "Application.resigned.ipa" Payload

Editar: se eliminó la parte de derechos (ver el comentario de los callejones, gracias)

Las respuestas a esta pregunta están un poco desactualizadas y faltan pasos potencialmente clave, por lo que esta es una guía actualizada para instalar una aplicación de un desarrollador externo.

—– Cómo renunciar a una aplicación iOS —–

Supongamos que recibe una aplicación (por ejemplo, MyApp.ipa) de otro desarrollador y desea poder instalarla y ejecutarla en sus dispositivos (utilizando ideviceinstaller, por ejemplo).

Preparar nuevos activos de firma

El primer paso es lograr un Perfil de aprovisionamiento que incluye todos los dispositivos que desea instalar y ejecutar. Asegúrese de que el perfil contenga un certificado que haya instalado en su Acceso al llavero (por ejemplo, iPhone Developer: Some Body (XXXXXXXXXX)). Descargue el perfil (MyProfile.mobileprovision) para que pueda reemplazar el perfil incrustado en la aplicación.

A continuación, vamos a preparar un archivo de derechos para incluirlo en la firma. Abra su terminal y ejecute lo siguiente.

$ security cms -D -i path/to/MyProfile.mobileprovision > provision.plist

Esto creará un archivo xml que describe su Perfil de aprovisionamiento. A continuación, queremos extraer los derechos en un archivo.

$ /usr/libexec/PlistBuddy -x -c 'Print :Entitlements' provision.plist > entitlements.plist

Reemplazar el perfil de aprovisionamiento y renunciar a la aplicación

Si está trabajando con un .ipa archivo, primero, descomprima la aplicación (si tiene un .app en su lugar, puede omitir este paso).

$ unzip MyApp.ipa

Su directorio de trabajo ahora contendrá Payload/ y Payload/MyApp.app/. A continuación, elimine los archivos de firma de código antiguos.

$ rm -rf Payload/MyApp.app/_CodeSignature

Reemplace el perfil de aprovisionamiento existente (es decir, embedded.mobileprovision) con el suyo.

$ cp path/to/MyProfile.mobileprovision Payload/MyApp.app/embedded.mobileprovision

Ahora firme la aplicación con el certificado incluido en su perfil de aprovisionamiento y la lista de derechos que creó anteriormente.

$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app

IMPORTANTE: también debes renunciar a todos los frameworks incluidos en la aplicación. Los encontrarás en Payload/MyApp.app/Frameworks. Si la aplicación está escrita en Swift o si incluye marcos adicionales, estos se deben renunciar o la aplicación se instalará pero no se ejecutará.

$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app/Frameworks/*

Ahora puede volver a comprimir la aplicación.

$ zip -qr MyApp-resigned.ipa Payload

Hecho

Ahora puede quitar el Payload directorio ya que tiene su aplicación original (MyApp.ipa) y su versión resignada (MyApp-resigned.ipa). Ahora puede instalar MyApp-resigned.ipa en cualquier dispositivo incluido en su perfil de aprovisionamiento.

Seguí con éxito esta respuesta, pero como los derechos han cambiado, simplemente eliminé el --entitlements "Payload/Application.app/Entitlements.plist" parte de la penúltima declaración, y funcionó a las mil maravillas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *