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.