¿Cómo volver a firmar el archivo ipa?

¿Cómo firmo el archivo .ipa con un perfil de aprovisionamiento después de generar un IPA como el siguiente con un perfil de provisión diferente? Me gustaría firmar el IPA con un perfil de aprovisionamiento ad-hoc para las pruebas beta, y luego volver a firmar el IPA exacto con un perfil de aprovisionamiento de aplicaciones para la tienda de aplicaciones.

/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" -o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" --sign "${DEVELOPER_NAME}" --embed "${PROVISONING_PROFILE}" 

Es realmente fácil de hacer desde la línea de comando. Tuve la esencia de un guión para hacer esto. Ahora se ha incorporado al script ipa_sign en https://github.com/RichardBronosky/ota-tools, que uso a diario. Si tiene alguna pregunta sobre el uso de estas herramientas, no dude en preguntar.

El corazón de esto es esto:

 IPA="/path/to/file.ipa" PROVISION="/path/to/file.mobileprovision" CERTIFICATE="Name of certificate: To sign with" # must be in keychain # unzip the ipa unzip -q "$IPA" # remove the signature rm -rf Payload/*.app/_CodeSignature # replace the provision cp "$PROVISION" Payload/*.app/embedded.mobileprovision # sign with the new certificate (--resource-rules has been deprecated OS X Yosemite (10.10), it can safely be removed) /usr/bin/codesign -f -s "$CERTIFICATE" --resource-rules Payload/*.app/ResourceRules.plist Payload/*.app # zip it back up zip -qr resigned.ipa Payload 

Su nueva aplicación firmada se llama resignated.ipa

¡Compruebe iResign para obtener una herramienta sencilla sobre cómo hacer esto!

[edit] después de algunos fudling alrededor, encontré una solución a la renuncia de llavero. Puede verificarlo en https://gist.github.com/Weptun/5406993

Una vieja pregunta, pero con el último XCode, codesign es fácil:

 $ codesign -s my_certificate example.ipa $ codesign -vv example.ipa example.ipa: valid on disk example.ipa: satisfies its Designated Requirement 

Actualicé el código de Bryan para mi Sierra iMac:

 # this version was tested OK vith macOs Sierra 10.12.5 (16F73) on oct 0th, 2017 # original ipa file must be store in current working directory IPA="ipa-filename.ipa" PROVISION="path-to.mobileprovision" CERTIFICATE="hexadecimal-certificate-identifier" # must be in keychain # unzip the ipa unzip -q "$IPA" # remove the signature rm -rf Payload/*.app/_CodeSignature # replace the provision cp "$PROVISION" Payload/*.app/embedded.mobileprovision # generate entitlements for current app cd Payload/ codesign -d --entitlements - *.app > entitlements.plist cd .. mv Payload/entitlements.plist entitlements.plist # sign with the new certificate and entitlements /usr/bin/codesign -f -s "$CERTIFICATE" '--entitlements' 'entitlements.plist' Payload/*.app # zip it back up zip -qr resigned.ipa Payload 
  1. Descomprime el archivo .ipa cambiando su extensión con .zip
  2. Ir a la carga útil. Encontrará el archivo .app
  3. Haga clic con el botón derecho en el archivo .app y haga clic en Mostrar contenido del paquete
  4. Eliminar la carpeta _CodeSigned
  5. Reemplace el archivo embedded.mobileprovisin con el nuevo perfil de provisión
  6. Vaya a KeyChain Access y asegúrese de que el certificado asociado con el perfil provisional esté presente
  7. Ejecute el siguiente comando: / usr / bin / codesign -f -s “Distribución de iPhone: nombre del certificado” –resource-rules “Payload / Application.app / ResourceRules.plist” “Payload / Application.app”

  8. Ahora vuelva a comprimir la carpeta Payload y cambie la extensión .zip con .ipa

Espero que esto sea útil.

Para referencia, siga el enlace a continuación mencionado: http://www.modelmetrics.com/tomgersic/codesign-re-signing-an-ipa-between-apple-accounts/

Las respuestas publicadas aquí no funcionaron para mí. Se saltaron principalmente la firma de marcos incrustados (o incluidos los derechos).

Esto es lo que funcionó para mí (se supone que un archivo ipa existe en el directorio actual):

 PROVISION="/path/to/file.mobileprovision" CERTIFICATE="Name of certificate: To sign with" # must be in the keychain unzip -q *.ipa rm -rf Payload/*.app/_CodeSignature/ # Replace embedded provisioning profile cp "$PROVISION" Payload/*.app/embedded.mobileprovision # Extract entitlements from app codesign -d --entitlements :entitlements.plist Payload/*.app/ # Re-sign embedded frameworks codesign -f -s "$CERTIFICATE" --entitlements entitlements.plist Payload/*.app/Frameworks/* # Re-sign the app (with entitlements) codesign -f -s "$CERTIFICATE" --entitlements entitlements.plist Payload/*.app/ zip -qr resigned.ipa Payload # Cleanup rm entitlements.plist rm -r Payload/ 

Pruebe esta aplicación http://www.ketzler.de/2011/01/resign-an-iphone-app-insert-new-bundle-id-and-send-to-xcode-organizer-for-upload/

Se supone que lo ayudará a renunciar al archivo IPA. Lo intenté yo mismo pero no pude pasar un error con Entitlements.plist. Podría ser un problema con mi proyecto. Usted debe darle una oportunidad.

El suspiro de Fastlane proporciona una solución bastante sólida para renunciar a los IPA.

De su LÉAME:

Renunciar

Si generó su archivo ipa pero quiere aplicar una firma de código diferente en el archivo ipa, puede usar sigh resign :

fastlane sigh resign

sigh encontrará el archivo ipa y el perfil de aprovisionamiento para usted si se encuentran en la carpeta actual.

Puede pasar más información usando la línea de comando:

fastlane sigh resign ./path/app.ipa --signing_identity "iPhone Distribution: Felix Krause" -p "my.mobileprovision"

Incluso manejará los perfiles de aprovisionamiento para las aplicaciones anidadas (por ejemplo, si tiene aplicaciones Watchkit)

Consulte este enlace a continuación, puede renunciar también al nombre de su aplicación, a su versión, a su ID de paquete, a los íconos de la aplicación.

https://www.youtube.com/watch?v=v0pPeFi3ZMU

Deberías probar esta nueva aplicación OSX: AirSign .

Esto lo ayudará a renunciar a su API y compartirla directamente con sus probadores beta. Si elige volver a firmarlo manualmente, especialmente si modifica el identificador de paquete de la aplicación, debe tener cuidado con los derechos de la aplicación (en algunos casos, podría ser complicado …).

Saludos,

Romain