"Demasiados archivos de símbolos" después de enviar correctamente mis aplicaciones

199

Descargué Xcode 6 GM y envié dos aplicaciones Swift a la tienda de aplicaciones hoy. Ambos pasaron toda la verificación previa a la carga y todas las demás cosas que tuvieron que pasar y se enviaron con éxito. Pero luego recibí dos correos electrónicos de Apple ... uno para cada programa y ambos dijeron esto:

Estimado desarrollador,

Hemos descubierto uno o más problemas con su entrega reciente de "xxxxxxxx" (mi nombre de aplicación eliminado). Su entrega fue exitosa, pero es posible que desee corregir los siguientes problemas en su próxima entrega:

Demasiados archivos de símbolos: estos símbolos no tienen una división correspondiente en ningún binario [1431D977-72BC-308F-AB71-71529F25400B.symbols, 158C72A7-98AC-3F07-B2BE-88427591B413.symbols, 44973EAC-563E-340C-B549-55A5014A , 678BF06F-0C3D-3A09-BFBF-699C7079FECD.symbols, 90907DDB-0400-38ED-BB5F-0C123330024.sy7, 93B749-5757-37AA7B9A7B7. -4422-32B8-8C40-CF9B45A2CCC6.symbols, B0CC9F7D-C542-3E18-A518-B28B7ECABE80.symbols, BF6A4C3B-6FA5-3C51-8404-19C2F132458D.A6D9E6D9. -3845-BAD5-F6E51045D396.symbols, D4967AA3-8FB0-3712-B0DE-7F4144AF8F4B.symbols, D813B314-AD37-31D4-B675-442052994495.symbols, DF42A13F-08D8-3E71-B221-FC357E0B60F5.symbols, F5F636C2-F0E0-3CA7 -8F7D-C49A36CD5C65.symbols]

Una vez que haya corregido los problemas, puede usar Xcode o Application Loader para cargar un nuevo binario en iTunes Connect.

Saludos,

El equipo de la App Store

Voy a adivinar que realmente no tiene nada que ver conmigo o con mis aplicaciones ... ¿y es solo una peculiaridad del primer día de envío de aplicaciones Swift? Ambas aplicaciones todavía están en modo "Esperando aprobación". ¡Ciertamente no puedo pensar en nada que pueda cambiar para hacer que lo que dijeron desaparezca! ¿Alguien más envía una aplicación Swift y recibe esa respuesta? ¿Crees que debería ignorarlo y esperar a ver qué pasa?

Jim Barber
fuente
El mío dijo eso y Invalid Swift Support. ¿Alguna idea de por qué podría obtener esto? Estoy usando el último Xcode.
Dehli
mismo problema aquí, y mi aplicación no se puede enviar para su revisión. debido a este problema. ¿Alguien ha resuelto?
yudun1989
1
El mismo problema aquí. enviado para su revisión de todos modos .. veamos qué pasa :)
dandoen
Mis dos aplicaciones Swift fueron aprobadas para la App Store ... ¡así que supongo que no me preocupé por nada! Whew ... :)
Jim Barber

Respuestas:

128

Esto sucede si incluye información de depuración de sus bibliotecas con el archivo del proyecto pero no incluye binarios.

  1. Abra la ventana del organizador en Xcode
  2. Haga clic derecho en un archivo que tenga este problema y seleccione "Mostrar en el buscador".
  3. Haga clic derecho en el archivo de almacenamiento y seleccione "Mostrar contenido del paquete"
  4. En la carpeta "dSYMs" verá varios archivos. Si ejecuta el dwarfdumpcomando de consola en estos archivos, obtendrá una lista de cadenas de UUID:

    dwarfdump -u MyFile.dSYM

Estoy seguro de que encontrará algunos UUID coincidentes del correo electrónico de Apple.

Para evitar esta advertencia, debe incluir en su archivo solo los dSYMarchivos de su aplicación y no las bibliotecas. Para esto, debe cambiar la configuración de compilación de las bibliotecas para no generar un dSYMarchivo. Simplemente busque el "formato de información de depuración" en la configuración y cámbielo de DWARF with dSYM Filea DWARFsolo.

Por ejemplo, en la captura de pantalla a continuación, encontrará el marco Stripe iOS.

Captura de pantalla de configuración del proyecto Xcode

Mikhail Grebionkin
fuente
13
dwarfdump -u *en la carpeta para ver todos los UUID
Jon
@ Jon ooooh ¿por qué lo veo después de que hice uno por uno? :) ¡gracias de todos modos!
Serj Rubens
66
¿Eliminar los archivos dSYM significa que los bloqueos relacionados con terceros ya no se simbolizarán en Crashlytics (o cualquier otra herramienta de informe de bloqueo)?
Eugenio
Sin embargo, si usa firebase \ fabric, los archivos dsym deben usarse para ver los registros de bloqueo en el sitio. ¿Siguen trabajando con este cambio?
Mattia Lancieri
88

Si encontró este problema al usar CocoaPods, agréguelo a su Podfile:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
        end
    end
end

Establecerá el formato de información de depuración en DWARF solo para todos sus objetivos Pod (solo el objetivo principal de la aplicación)

Denis Kutlubaev
fuente
@wzbozon Sí, solo pido que verifiquen dos veces. Porque después de que lo hice, Crashlyticts dejó de funcionar. ¡Gracias!
Cesar Rodriguez
Crashlytics debería seguir funcionando para su aplicación, ya que este script cambia la configuración de compilación solo para los pods.
Stan
1
Estoy de acuerdo. Pero no verá informes de pods. También se puede configurar DWARF con dSYM File solo para algunos pods, por ejemplo, pods de desarrollo.
Denis Kutlubaev
@Stan, ¿estás diciendo que Crashlytics seguirá funcionando? César Rodríguez parece estar diciendo que no funcionará.
airowe
8
Esto lo resolvió para mí. No te olvides depod install
firebear
17

Si está utilizando CocoaPods y su aplicación está configurada para usar solo arm64 (es decir, solo hay arm64 en la lista de información de su proyecto)

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>arm64</string>
</array>

entonces puede intentar agregar el siguiente script en su Podfile para resolver este problema.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      config.build_settings['ARCHS'] = 'arm64'
    end
  end
end

Y

establezca todos los objetivos de sus proyectos (no los objetivos en Pods) en arm64 solamente

Configuración del proyecto Xcode

Referencia del tema CocoaPods Github

Jerry Chen
fuente
Presumiblemente, también deberías incluir arm64e ahora, ¿no?
cuña
Incluiría arm64s para el simulador. Se eliminará automáticamente para las versiones de lanzamiento.
cybergen
13

Tengo este problema debido a que el proyecto tiene una arquitectura válida arm64 donde los objetivos de CocoaPods tienen una arquitectura válida arm64, armv7 y armv7s .

Para verificar qué destino tiene qué arquitectura válida, siga los siguientes pasos

  1. En Xcode -> Ventana -> Organizador
  2. Seleccione el archivo y Revelar en Finder
  3. En el archivo .xcarchive , Mostrar contenido del paquete
  4. Abra la terminal y proporcione la ruta de la carpeta dSYMs .

  5. Ingrese el comando dwarfdump --uuid *y mostrará una lista de UUID con arquitecturas válidas.

El UUID coincidirá con el correo electrónico de advertencia de Apple

El objetivo principal del proyecto y las vainas de cacao suponen tener la misma arquitectura válida. Al hacer esto, resolverá el problema.

miOS
fuente
Creo que explica lo mejor que está pasando. Solo tengo estas advertencias sobre bibliotecas con arquitectura armv7 porque mi proyecto está construido solo para arm64. Queda la pregunta de si debo agregar armv7 al proyecto o eliminarlo de Pods.
Ariel Bogdziewicz
6

Me funcionó al habilitar el código de bits: estaba apagado antes

Habilitar código de bits: sí

ingrese la descripción de la imagen aquí

Tarun Seera
fuente
1

Lo anterior ayudó a solucionar problemas, pero no pudo resolverlo. Teníamos proyecto en iOS 12 pero pods 10 - condujo a un montón de archivos armv7. La actualización del pod a iOS 12 se resolvió al instante.

drees
fuente
0

Tuve el mismo problema solucionado al tener el mismo "General" => "Información de implementación" => "Objetivo de implementación" para todos mis objetivos.

ARR
fuente
0

En Xcode, busque en la Configuración de compilación los "Símbolos de depuración de la tira durante la copia" (COPY_PHASE_STRIP). Cuando está habilitado, los símbolos de depuración se omiten de su .app y se colocan en un archivo .dSYM. De lo contrario, su .app contiene estos símbolos. (De forma predeterminada, los símbolos de depuración se eliminan de las versiones de lanzamiento por motivos de ofuscación. Probablemente no debería cambiar esta configuración para la configuración de la versión).

Asegúrese de marcar esta opción en la configuración de compilación del proyecto

https://possiblemobile.com/2015/03/symbolicating-your-ios-crash-reports/

Sanad Barjawi
fuente
0

El problema para mí era una línea en mi build.xcconfigarchivo. Tuve que quitar

IPHONEOS_DEPLOYMENT_TARGET = 11.0

que configuraba el proyecto para compilar solo para arm64 (y no arm7). Siguiendo los pasos @miOS, pude ver que el proyecto de cápsulas se estaba construyendo para ambos.

Franco
fuente
1
stackoverflow.com/a/49063850/3293172 iOS 11 dejó de admitir armv7 y armv7s, por lo que solo se necesita arm64 si tiene un objetivo de implementación> = iOS 11.0.
Ariel Bogdziewicz
-2

Para mí todo fue muy simple. Tuve el mismo problema y no supe qué hacer durante una semana.

Después de enviar una solicitud archivada, verá el certificado para su distribución en una pequeña ventana emergente. Hay una casilla de verificación después, que debe desmarcar. Después de eso, lo enviará y recibirá un correo electrónico sobre los archivos de símbolos. PERO no es problema. Es solo una advertencia; no es un error! Si desmarca esa casilla de verificación, su aplicación se enviará correctamente. Espero que te pueda ayudar.

Captura de pantalla de la casilla de verificación y la ventana emergente:

Captura de pantalla de la casilla de verificación y la ventana emergente

Lenden
fuente
Realmente espero que sea más detallado ... No tengo idea de qué casilla de verificación o ventana emergente está hablando. Tal vez una captura de pantalla?
Louis Hong
gyazo.com/6d7bb2035979cb75253ba92a40e8d898 Creo que lo veo, es este
Louis Hong
55
Sí, pero esto eliminará todos los símbolos del paquete y, por lo tanto, no recibirá informes de bloqueo simbolizados. (¿Proporcionan incluso informes de bloqueo simbolizados en aplicaciones de App Store ahora con TestFlight?)
Markus Rautopuro
30
Esta no es una solución válida para el problema. Esto es evitar el síntoma, no abordar el problema. Consulte la respuesta de Mikhails para obtener una descripción de cómo está cargando símbolos que no necesita. Esta respuesta evita cargar cualquier símbolo, rompiendo así la simbolización de bloqueo a través de iTunesConnect
JConway
2
NO haga eso, si lo hace, no podrá analizar su aplicación en App Store en busca de errores de bloqueo
usuario924