ios - instalar - ¿Cómo volver a firmar el archivo ipa?
subir ipa a app store (10)
¿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}"
- Descomprime el archivo .ipa cambiando su extensión con .zip
- Ir a la carga útil. Encontrará el archivo .app
- Haga clic con el botón derecho en el archivo .app y haga clic en Mostrar contenido del paquete
- Eliminar la carpeta _CodeSigned
- Reemplace el archivo embedded.mobileprovisin con el nuevo perfil de provisión
- Vaya a KeyChain Access y asegúrese de que el certificado asociado con el perfil provisional esté presente
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"
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/
¡Compruebe iResign para obtener una herramienta sencilla sobre cómo hacer esto!
[edit] después de algunos fudling alrededor, encontré una solución al redimensionamiento de llavero. Puede verificarlo en https://gist.github.com/Weptun/5406993
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
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.
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
El sigh 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 usarsigh 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)
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
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.
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