Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Sí, es posible, pero normalmente será necesario volver a firmar la agrupación .app
después de realizar el cambio.
Tenga en cuenta que la modificación del archivo .ipa
no es necesaria en uso normal. Este artículo se proporciona únicamente con propósito informativo.
Ejemplo: quitar un archivo de un archivo .ipa
En este ejemplo se supone que el nombre del proyecto de Xamarin.iOS es iPhoneApp1
y el generated session id
es cc530d20d6b19da63f6f1c6f67a0a254
Compile el archivo
.ipa
como normalmente desde Visual Studio.Cambie al host de compilación de Mac.
Busque la compilación en la carpeta
~/Library/Caches/Xamarin/mtbs/builds
. Puede pegar esta ruta de acceso en Finder> Ir > Ir a carpeta para examinar la carpeta en el Finder. Busque la carpeta que coincide con el nombre del proyecto. Dentro de esa carpeta, busque la carpeta que coincide con elgenerated session id
de la compilación. Probablemente será la subcarpeta que tiene el tiempo de modificación más reciente.Abra una nueva ventana de
Terminal.app
.Escriba
cd
en la ventana de Terminal.app y, a continuación, arrastre y coloque la carpetagenerated session id
en la ventana deTerminal.app
:Escriba la clave de retorno para cambiar el directorio en la carpeta
generated session id
.Descomprima el archivo
.ipa
en una carpetaold/
temporal con el comando siguiente. Ajuste los nombresAd-Hoc
yiPhoneApp1
según sea necesario para el proyecto concreto.ditto -xk bin/iPhone/Ad-Hoc/iPhoneApp1-1.0.ipa old/
Mantenga abierta la ventana
Terminal.app
.Elimine los archivos deseados de
.ipa
. Puede moverlos a la papelera mediante Finder o eliminarlos en la línea de comandos medianteTerminal.app
. Para ver el contenido del archivoPayload/iPhone
en Finder, haga clic en el archivo y seleccione Mostrar contenido del paquete.Con el mismo enfoque general que en el paso 3, busque el archivo de registro en
~/Library/Logs/Xamarin/MonoTouchVS/
que tiene el nombre del proyecto ygenerated session id
en el nombre:Abra el registro de compilación del paso 10, por ejemplo, haciendo doble clic en él.
Busque la línea que incluye
tool /usr/bin/codesign execution started with arguments: -v --force --sign
.Escriba
/usr/bin/codesign
en la ventana Terminal.app del paso 8.Copie todos los argumentos a partir de
-v
de la línea del paso 12 y péguelos en la ventana Terminal.app.Cambie el último argumento para que sea el conjunto de
.app
ubicado dentro de la carpetaold/Payload/
y, a continuación, ejecute el comando./usr/bin/codesign -v --force --sign SOME_LONG_STRING in/iPhone/Ad-Hoc/iPhoneApp1.app/ResourceRules.plist --entitlements obj/iPhone/Ad-Hoc/Entitlements.xcent old/Payload/iPhoneApp1.app
Cambie al directorio
old/
en Terminal:cd old
Comprima el contenido del directorio en un nuevo archivo
.ipa
mediante el comandozip
. Puede cambiar el argumento"$HOME/Desktop/iPhoneApp1-1.0.ipa"
para generar el archivo.ipa
donde quiera:zip -yr "$HOME/Desktop/iPhoneApp1-1.0.ipa" *
Mensajes comunes de error
Si ve Invalid Signature. A sealed resource is missing or invalid.
, esto significa generalmente que algo ha cambiado dentro de la agrupación de .app
y que la agrupación de .app
no se volvió a firmar correctamente después. Tenga en cuenta también que si desea crear un .ipa
con un perfil de distribución, debe crear el .ipa
original con un perfil de distribución. De lo contrario, Entitlements.xcent
será incorrecto.
Para dar un ejemplo concreto de cómo puede surgir este error, si ejecuta el siguiente comando codesign --verify
en la ventana de Terminal después del paso 9, verá el error junto con la causa precisa del error:
$ codesign -dvvv --no-strict --verify old/Payload/iPhoneApp1.app
old/Payload/iPhoneApp1.app: a sealed resource is missing or invalid
file missing: /Users/macuser/Library/Caches/Xamarin/mtbs/builds/iPhoneApp1/cc530d20d6b19da63f6f1c6f67a0a254/old/Payload/iPhoneApp1.app/MyFile.png
Y el proceso de comprobación de App Store notificará un mensaje de error similar:
ERROR ITMS-90035: "Firma no válida. Falta un recurso sellado o no es válido. El binario en la ruta de acceso [iPhoneApp1.app/iPhoneApp1] contiene una firma no válida. Asegúrese de que ha firmado la aplicación con un certificado de distribución, no un certificado ad hoc o un certificado de desarrollo. Compruebe que la configuración de firma de código en Xcode es correcta en el nivel de destino (que invalida los valores en el nivel de proyecto). Además, asegúrese de que la agrupación que está cargando se creó con un destino Release en Xcode, no con un destino de simulador. Si está seguro de que la configuración de firma de código es correcta, elija "Limpiar todo" en Xcode, elimine el directorio "build" en el Finder y recompile el destino de lanzamiento. Para obtener más información, consulte https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html"