code apple app ios testflight appstore-approval

ios - apple - sign in to app store connect



Cómo depurar el error de "paquete inválido" que ocurre solo después de enviarlo a la tienda de aplicaciones (8)

Tengo un montón de marcos en mi aplicación. La aplicación funciona bien en versión adhoc / enterprise. Solo si me envío a la tienda de aplicaciones para realizar pruebas de prueba, recibo este correo electrónico de error de Apple:

Estimado desarrollador,

Hemos descubierto uno o más problemas con su entrega reciente de "El nombre de mi aplicación aquí". Para procesar su entrega, se deben corregir los siguientes problemas:

Paquete no válido: una o más bibliotecas dinámicas a las que hace referencia su aplicación no están presentes en la ruta de búsqueda de dylib.

Una vez que se han corregido estos problemas, puede volver a enviar el binario corregido.

Saludos,

El equipo de la App Store

No hay información específica aquí. ¿Cómo puedo depurarlo?


Así que luché en esto durante dos días. Resultó ser que había revisado UITests en Archivar para la Estructura para el Esquema que estaba archivando.

Después de desmarcarlo del archivo, volver a archivarlo, validarlo (aunque validarlo antes de que siempre haya pasado) y "Cargar en la tienda de aplicaciones" No recibí el correo electrónico de Apple informándome de la asistencia no válida de Swift. En su lugar, recibí el correo electrónico que se había procesado y está listo.


Después de agregar el marco Swift personalizado a mi proyecto, recibí este correo electrónico después de cargar la aplicación a iTunes connect .

Recibí este correo electrónico de la tienda iTunes ,

Paquete no válido : una o más bibliotecas dinámicas a las que hace referencia su aplicación no están presentes en la ruta de búsqueda de dylib.

La solución es simple para este problema,

Paso 1: asegúrese de que su marco personalizado se agregue a Binarios incrustados en la pestaña General de su destino.

Paso 2: en la configuración de compilación,

Establezca Always Embed Swift Standard Libraries = Yes para su objetivo principal del proyecto .

Y establecer Always Embed Swift Standard Libraries = No para su destino de marco personalizado .

Esto resolvió mi problema y pude cargar archivos binarios para iTunes Connect .

Ref


En mi caso, en la configuración de compilación, esto se solucionó cuando agregué lo siguiente a la configuración de compilación para la biblioteca:

DYLIB_INSTALL_NAME_BASE = @rpath

La pista fue una advertencia del vinculador: ''YourLibrary tiene un nombre de instalación que comienza con "/", pero no es del SDK especificado''


Me he encontrado con el mismo problema al cargar una aplicación con soporte de visualización en la tienda de aplicaciones.

Pude resolverlo con la sugerencia de la primera respuesta, usando otool -L para analizar el binario de la ipa o xcarchive. Sin embargo, el problema no fue con mis frameworks (en @rpath ) sino con una @rpath rápida. Me di cuenta de que libswiftWatchKit.dylib faltaba en la carpeta de marcos.

La solución que funcionó para mí fue tan simple como establecer EMBEDDED_CONTENT_CONTAINS_SWIFT=YES en la configuración de compilación de la aplicación de vigilancia (o la extensión de la aplicación de vigilancia, pero no ambas). Después de eso, todas las bibliotecas Swift necesarias se copiaron correctamente en la ruta de la aplicación del reloj en el archivo y la carga en la tienda de aplicaciones funcionó correctamente.

Aparentemente, la aplicación de visualización funciona y las pasadas de carga si proporciona las bibliotecas Swift necesarias solo en la carpeta principal de la aplicación.


Mi problema: tuve el mismo error con los marcos incrustados.

  1. El proyecto de la aplicación tiene un proyecto de marco personalizado
  2. Dentro del proyecto Marco Personalizado hay otro proyecto Marco Personalizado

La aplicación incorporada al simulador y a los dispositivos sin ningún problema, pero falló la prueba de Apple, devolviendo "Paquete no válido".

Inspeccioné el paquete tal como el soporte técnico le había dicho a Taha, ¡y todo estaba presente y correcto!

Mi solución: reestructuré el proyecto para que los dos marcos personalizados queden uno al lado del otro y uno ya no esté incrustado dentro del otro.

Este parece ser un problema de validación de Apple, ya que todo funciona bien en los dispositivos y en el simulador, pero el trabajo fue sencillo.


Obtuve una respuesta del Soporte Técnico para Desarrolladores de Apple que dice que es un error en el lado de Apple. esta es la solución sugerida a continuación que no funcionó para mí:

Para diagnosticar este problema, debe exportar el IPA que está enviando a la App Store desde Xcode. Como las IPA son archivos zip, puede descomprimirlo haciendo clic derecho y diciendo Abrir con> Utilidad de archivo. Debería encontrar su ejecutable principal dentro de la estructura de carpetas descomprimida y ejecutar otool en la línea de comandos para ver la lista de la biblioteca: otool -L

La lista de rutas que obtiene debe coincidir con lo que encuentra dentro de su IPA. Todas sus bibliotecas deben comenzar con @rpath. Una simple comparación de todo lo que está en esta lista con las carpetas de IPA descomprimidas debería revelar lo que falta.

Una vez que sepa lo que falta, vaya a la configuración de las fases de compilación de Xcode. Debería haber una fase de compilación para Copiar archivos o Incrustar marcos que incluya la biblioteca faltante; simplemente debe agregar la biblioteca a la lista. Si no ve ninguna de estas fases de compilación, puede recrearla agregando una nueva fase de compilación de Copiar archivos, configurando Destino en marcos y agregando la biblioteca a la lista, asegurándose de que la opción Iniciar sesión de código esté marcada.

Si no encuentra nada que falte en su binario principal, asegúrese de hacer la misma búsqueda en cualquier otro binario que pueda tener, como para una aplicación watchOS o una extensión de aplicación iOS.

Si descubre que todos los marcos se encuentran en esta fase de compilación, consulte la sección Binarios incrustados de la página General de su aplicación, y avíseme si ve varios niveles de ../ junto al binario que encontró. Está perdido.

¡Por favor, dígame si le funciona!


Tenía el mismo problema. Esto me sucedió porque uno de mis destinos de Framework se agregó al objetivo principal en "Vincular binarios con bibliotecas" pero no se agregó a "Dependencias de destino" y "Binarios incrustados"


Tuve el mismo problema, se debía a que un marco no estaba presente en la subcarpeta de Frameworks en el paquete de la aplicación.

Lo arreglé agregando una fase de compilación de Copiar campos y agregando el archivo .framework faltante allí.