¿Cómo puedo firmar el .archivo ipa con un perfil de suministro después de generar una IPA como la siguiente con una disposición diferente de perfil? Me gustaría firmar el IPA con un ad-hoc perfil de suministro para las pruebas beta, y, a continuación, volver a firmar el exacto IPA con una aplicación de presentación de perfil de suministro para la app store.

/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}"
InformationsquelleAutor Johnny | 2011-03-01

9 Comentarios

  1. 191

    Es muy fácil hacerlo desde la línea de comandos. Yo tenía una idea de una secuencia de comandos para hacer esto. Ahora se ha incorporado en el ipa_sign secuencia de comandos en https://github.com/RichardBronosky/ota-tools que yo uso a diario. Si usted tiene alguna pregunta acerca del uso de estas herramientas, no dude en preguntar.

    El corazón de esto es la siguiente:

    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" Payload/*.app
    # zip it back up
    zip -qr resigned.ipa Payload

    Su nueva firmado aplicación se llama renunció.ipa

    • 7 votos y no una sola pregunta. Supongo que mi bash es solo que claro.
    • De hecho, es un tipo de Sir.
    • im obteniendo un mensaje de error diciendo: «seguridad: no se puede abrir «/var/folders/74/kpcwmb6j1pn92kr8mtvm2mwh0000gn/T/./resign.I9DrKi7B/Payload/AtlantaJournal.app/embedded.mobileprovision» para la lectura: No existe el fichero o el directorio».
    • Veo que me había errante codificados de un camino en el gist. Usted realmente debe ser el uso de github.com/RichardBronosky/ota-tools/blob/master/ipa_sign en lugar de la esencia. Es el código.
    • Tengo este error seguridad: no se puede abrir «/tmp/dimitir.MyApp.WObe2/mi.mobileprovision» para la lectura: No tal archivo o directorio fácilmente fijado por el movimiento de la cp en el código. Gracias!
    • moviendo qué? No entiendo lo que significa.
    • Yo simplemente empujó una actualización que debería arreglar esto para usted.
    • gracias, pero me sigue apareciendo este error. Pero funciona en la terminal, si yo escriba los comandos manualmente.
    • puede usted por favor enviarme una copia de lo que funciona y no funciona. Por favor, incluya una git log -1 | cat; git status desde dentro de la ota-directorio de herramientas.
    • esto me salvó! Gracias!
    • Gracias por comentar, @yeesterbunny. Me anima a pasar más tiempo en stackoverflow… lo cual es especialmente importante cuando la gente decide no aceptar la más alta calificación de las respuestas como «La respuesta correcta».
    • después de ejecutar la secuencia de comandos en el terminal, no pasó nada, por favor consejos
    • Usted puede recibió una advertencia / error en-recursos-las reglas de los parámetros, que han sido desaprobados en OS X Yosemite (10.10), simplemente eliminar este parámetro resolver este problema.
    • RichardBronosky muchas gracias por esto – pasé horas tratando de soluciones diferentes antes de encontrar la suya. Sólo para ayudar a los futuros personas – necesitaba el excelente puntero de @kenji que yo casi no veo como fue en el final de los comentarios. Te sugiero agregar este puntero en su respuesta, o la secuencia de comandos.
    • Una pequeña nota: parece que CodeResources se encuentra ahora en de la _CodeSignature carpeta, por lo que sólo necesita para eliminar esa carpeta.
    • comentario añadido a la secuencia de comandos
    • Después de hacer esto, Cargador de Aplicaciones todavía no se puede aceptar porque la versión es la misma que la anterior
    • cambiar el número de versión sería una tarea diferente de lo que se le pidió por parte de la OP. Yo sugeriría que se busca una respuesta a su tarea y pedir una nueva pregunta y si no la puede encontrar.
    • Lo que yo veo. Porque no podemos simplemente volver a presentar nueva aplicación para TestFlight por el cambio de perfil de suministro. No es aceptado por la aplicación si tiene la misma versión y el número de versión como la anterior. Gracias.
    • Creo que la delgada puede ser lo que usted necesita. stackoverflow.com/questions/16975049/… yo no lo he probado aún, pero voy a trabajar en el día de hoy. Podemos informe de la espalda y voy a agregar a mi respuesta si funciona. Gracias por la idea. Siempre estoy buscando mejorar mi respuestas.
    • Por CIERTO, yo era capaz de utilizar la información en la respuesta para cambiar el CFBundleVersion y CFBundleShortVersionString de una IPA para que yo NO tenga el código fuente y lo presentará a TestFlight. Mi equipo fue capaz de instalar y probar la aplicación. Hemos enviado a Apple y es ahora en la tienda. He modificado ipa_sign incorporar esta característica y después de más personal a las pruebas me voy a liberar una actualización.
    • Mientras esta bash script funciona perfectamente, si tu aplicación tiene derechos que no. Sólo se necesita añadir security cms -D -i "$PROVISION" > provision.plist /usr/libexec/PlistBuddy -x -c 'Print :Entitlements' provision.plist > entitlements.plist antes de copiar el perfil de suministro y, a continuación, hacer /usr/bin/codesign -f -s "$CERTIFICATE" --entitlements entitlements.plist Payload/*.app en lugar de la actual firma de código. Sólo me di cuenta de que la esencia es la versión actualizada (manejo de derechos) después de leer los comentarios!
    • Hola, lo siento, soy totalmente nuevo en bash y firma de código :/ aquí está el error al ejecutar el bash desde una ventana de terminal: el Uso de temp dir: /tmp/dimitir. … Aplicación tiene BundleDisplayName ‘…’ y BundleShortVersionString ‘…’ App ha BundleIdentifier ‘…’ y BundleVersion … de seguridad: SecPolicySetValue: Uno o más parámetros pasados a una función no es válida. La aplicación tiene disposición ‘…’, que apoya a ‘…’ seguridad: no se puede abrir «/tmp/dimitir…./….mobileprovision» para la lectura: No tal archivo o directorio —-> cualquier cosa que estoy haciendo mal?
    • /usr/bin/codesign -f -s "$CERTIFICATE" ya no funciona. Debe ser /usr/bin/codesign --force -s "$CERTIFICATE" -v Payload/*.app
    • Lo que funcionó para mí el día de hoy: Ejecutar security find-identity -v para determinar el ID de su firma de identidad. Invocar /usr/bin/codesign --force -s YOUR_IDENTITY -v Payload/*.app para firmar la aplicación.

  2. 36

    De verificación iResign para una herramienta de fácil sobre cómo hacer esto!

    [editar] después de algunos fudling alrededor, encontré una solución para llavero-consciente de su dimisión. Usted puede comprobar a cabo en https://gist.github.com/Weptun/5406993

    • ¿hay alguna herramienta que puede cambiar el nombre para Mostrar, junto con el id del Paquete, mientras que dimitir? Esto ayuda a tener diferentes nombres para mostrar de diferentes environements. como App-Dev, Aplicación de control de calidad, Aplicación de la Etapa de etc.
    • Sí, la floatsign.sh hace exactamente eso.
    • Esta aplicación funcionaba a la perfección! Gracias. 🙂
    • Obras. Simple y hermoso.
  3. 13

    Tipo de pregunta vieja, pero con la última versión de 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
    • pero no trató de trabajo: «argumento no Válido»
    • Esta pregunta fue respondida de la espalda cuando iOS 6.x fue la versión más reciente. Desde entonces, hemos tenido dos versiones principales, que, obviamente, ha cambiado muchas cosas. Usted puede desear limitar sus búsquedas a las respuestas que se dirigen a la tecnología actual.
    • A mí me funcionó. usted tiene que reemplazar «my_certificate» con el nombre de la clave en su llavero.
    • codesign comando se utiliza también en @BrunoBronosky respuesta. Yo no soy capaz de usarlo directamente en «*.el ipa de archivo», y el «-vv» opciones siempre devuelve code object is not signed at all en los archivos que sé que ellos están firmados…
    • FYI – codiseñar viene con macOS no Xcode.
  4. 9

    Las respuestas publicadas aquí no acababa de funcionar para mí. Principalmente se omite la firma incrustada marcos (o incluso de los derechos).

    Aquí es lo que funcionó para mí (se supone que una ipa existe un archivo está 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/
  5. 7

    Fastlane del suspiro proporciona una robusta solución para renunciar IPAs.

    De sus LÉAME:

    Renunciar

    Si usted genera su ipa archivo, pero desea aplicar diferentes de firma de código en el archivo ipa, puede utilizar sigh resign:

    fastlane sigh resign

    sigh se encuentra el archivo ipa y el perfil de suministro para usted si se encuentra en la carpeta actual.

    Usted puede pasar más de información mediante la línea de comandos:

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

    Incluso manejar suministro de perfiles para aplicaciones anidadas (por ejemplo. si usted tiene watchkit apps)

  6. 7

    He actualizado Bryan código de 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
    # identifier maybe retrieved by running: security find-identity -v -p codesigning
    
    # 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
    • yo git el siguiente error derechos.plist: no tipo blob (aceptar ciegamente) de los derechos.plist: longitud no válida en derecho blob
    • se puede compartir que el derecho contenido del archivo?
    • Trabajó como un encanto!
  7. 5
    1. Descomprimir el .archivo ipa cambiando su extensión .zip
    2. Ir a la Carga. Va a encontrar .archivo de aplicación de
    3. Derecho haga clic en el .aplicación de archivo y haga clic en Mostrar contenido del paquete
    4. Eliminar la _CodeSigned carpeta
    5. Reemplazar el embedded.mobileprovision archivo con la nueva disposición de perfil
    6. Ir a Acceso a Llaveros y asegúrese de que el certificado asociado con la provisional perfil está presente
    7. Ejecutar el siguiente comando mencionado:
      /usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" "Payload/Application.app"

    8. Ahora zip de la Carga de la carpeta de nuevo y cambiar el .extensión zip con .ipa

    Espero que esta ayuda.

    De referencia a continuación se mencionan enlace:
    http://www.modelmetrics.com/tomgersic/codesign-re-signing-an-ipa-between-apple-accounts/

  8. -2

    Usted debe tratar de este nuevo OSX aplicación : AirSign.

    Esto le ayudará a dimitir de su IPA y compartir directamente sobre-el-aire con su beta testers.
    Si usted decide volver a iniciar sesión de forma manual, especialmente si usted modificar el Id del Paquete de la aplicación, usted realmente debe ser cuidado con la aplicación de los derechos de
    (En algunos casos, podría ser complicado…).

    Saludos,

    Romain

Dejar respuesta

Please enter your comment!
Please enter your name here