verificar una tutuapp requiere puedo pudo para internet fuentes fiables empresarial desconocidas desarrolladores desarrollador confiable confiabilidad conexion como apps app activar abrir iphone build codesign ipa

una - Re-firmar IPA(iPhone)



no se pudo verificar la app tutuapp (7)

Actualmente construyo todas mis aplicaciones con hudson usando xcodebuild seguido de xcrun sin ningún problema

Recibí un par de archivos IPA de diferentes personas a los que me gustaría volver a firmar con una cuenta empresarial en lugar de la cuenta corporativa (para la tienda de aplicaciones, o en ocasiones distribuida ad-hoc).

Mi problema es que cuando intento renunciar a la aplicación, no se instala en mi dispositivo (y debería ser una versión de Enterprise). El mensaje de error está en el dispositivo (no en iTunes) y me dice simplemente que no se pudo instalar la aplicación. No se da más información.

He encontrado información, ( http://www.ketzler.de/2011/01/resign-an-iphone-app-insert-new-bundle-id-and-send-to-xcode-organizer-for-upload/ )

Y esto podría ser posible. El problema al que me enfrento es que no parece incrustar el perfil de aprovisionamiento móvil como lo hago con mis compilaciones normales (usando xcrun), esto es posible controlarlo con la herramienta codesign, o es posible volver a firmar con xcrun. ?

Con mi script de renuncia, actualmente lo hago

  • descomprimir app.ipa
  • appname = $ (ls Payload)
  • xcrun -sdk iphoneos PackageApplication -s "$ provisioning_profile" "$ project_dir / Payload / $ appname" -o "$ project_dir / app-resigned.ipa" --sign "$ provisioning_profile" --embed "$ mobileprovision"

He buscado en el archivo ipa resultante y parece ser muy similar a la aplicación original. ¿Qué archivos realmente deberían cambiar aquí? Inicialmente pensé que el _CodeSignature / CodeResources cambiaría, pero el contenido se ve exactamente igual.

Los indicadores son muy apreciados.


¡Finalmente funcionó!

Probado con una IPA firmada con cert1 para el envío a la tienda de aplicaciones sin dispositivos agregados en el perfil de aprovisionamiento. Resultados en 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:

Descomprimir el IPA

unzip Application.ipa

Eliminar el antiguo CodeSignature

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

Reemplace el perfil de aprovisionamiento móvil incorporado

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"

Re-paquete

zip -qr "Application.resigned.ipa" Payload

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


Con la opción de renuncia de Fastlane sigh, puede hacer esto muy fácilmente.

sigh resign -p <path-to-profile-with-mobileprovision-ext> -i <code-sighning-identity-of-your-app>

Puede descargar el perfil usando suspiro también, justo antes del comando.


Gracias, Erik, por publicar esto. Esto funcionó para mí. Me gustaría agregar una nota sobre un paso adicional que necesitaba. Dentro de "Payload / Application.app /" había un directorio llamado " CACertChains " que contenía un archivo llamado " cacert.pem ". Tuve que eliminar el directorio y el .pem para completar estos pasos. ¡Gracias de nuevo! -


Las respuestas a esta pregunta están un poco desactualizadas y faltan pasos 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 de 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 obtener un Perfil de Aprovisionamiento que incluya todos los dispositivos que desea instalar y ejecutar. Asegúrese de que el perfil contenga un certificado que haya instalado en su Acceso a Llaveros (por ejemplo, iPhone Developer: Some Body (XXXXXXXXXX)). Descarga el perfil (MyProfile.mobileprovision) para que puedas reemplazar el perfil insertado en la aplicación.

A continuación, vamos a preparar un archivo de derechos para incluir en la firma. Abre tu terminal y ejecuta lo siguiente.

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

Esto creará un archivo xml que describa 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

Reemplace el perfil de provisión y la aplicación de renunciar

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

$ unzip MyApp.ipa

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

$ rm -rf Payload/MyApp.app/_CodeSignature

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

$ 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 los derechos.plist que creó anteriormente.

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

IMPORTANTE: también debe renunciar a todos los marcos incluidos en la aplicación . Los encontrará en Payload/MyApp.app/Frameworks . Si la aplicación está escrita en Swift o si incluye marcos adicionales, estos deben resignarse 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 puedes volver a subir la aplicación.

$ zip -qr MyApp-resigned.ipa Payload

Hecho

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


Ninguno de estos enfoques de renuncia funcionaba para mí, así que tuve que trabajar en otra cosa.

En mi caso, tuve una IPA con un certificado caducado. Podría haber reconstruido la aplicación, pero como queríamos asegurarnos de distribuir exactamente la misma versión (solo con un nuevo certificado), no quisimos reconstruirla.

En lugar de las formas de renuncia mencionadas en las otras respuestas, recurrí al método de Xcode de crear una IPA, que comienza con un .xcarchive de una compilación.

  1. Dupliqué un .xcarchive existente y comencé a reemplazar los contenidos. (Ignoré el archivo .dSYM).

  2. Extraje la aplicación anterior del antiguo archivo IPA (mediante descompresión, la aplicación es lo único en la carpeta de carga)

  3. Trasladé esta aplicación al .xcarchive nuevo, en Products/Applications reemplazando la aplicación que estaba allí.

  4. Edité Info.plist , editando

    • ApplicationProperties/ApplicationPath
    • ApplicationProperties/CFBundleIdentifier
    • ApplicationProperties/CFBundleShortVersionString
    • ApplicationProperties/CFBundleVersion
    • Name
  5. Moví el .xcarchive a la carpeta de archivo de Xcode, generalmente /Users/xxxx/Library/Developer/Xcode/Archives .

  6. En Xcode, abrí la ventana de Organizador, seleccioné este nuevo archivo e hice una exportación regular (en este caso, Enterprise).

El resultado fue una buena IPA que funciona.


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


Si tiene una aplicación con extensiones y / o una aplicación de vigilancia y tiene múltiples perfiles de aprovisionamiento para cada extensión / aplicación de observación, entonces debe usar esta secuencia de comandos para volver a firmar el archivo ipa.

Re-firmando script en Github

Aquí hay un ejemplo de cómo usar este script:

./resign.sh YourApp.ipa "iPhone Distribution: YourCompanyOrDeveloperName" -p <path_to_provisioning_profile_for_app>.mobileprovision -p <path_to_provisioning_profile_for_watchkitextension>.mobileprovision -p <path_to_provisioning_profile_for_watchkitapp>.mobileprovision -p <path_to_provisioning_profile_for_todayextension>.mobileprovision resignedYourApp.ipa

También puede incluir otros perfiles de provisión de extensiones agregándolo con otra opción -p.

Para mí, todos los perfiles de provisión fueron firmados por el mismo certificado / identidad de firma.