"Muitos arquivos de símbolos" depois de enviar meus aplicativos com sucesso

199

Eu baixei o Xcode 6 GM e enviei dois aplicativos Swift para a loja de aplicativos hoje. Ambos foram aprovados em todas as verificações de pré-upload e todos os outros itens necessários e foram enviados com êxito. Mas então recebi dois e-mails da Apple ... um para cada programa e ambos disseram o seguinte:

Caro desenvolvedor,

Descobrimos um ou mais problemas com sua entrega recente para "xxxxxxxx" (nome do meu aplicativo removido). Sua entrega foi bem-sucedida, mas você pode corrigir os seguintes problemas na sua próxima entrega:

Muitos arquivos de símbolos - esses símbolos não têm fatia correspondente em nenhum código binário [1431D977-72BC-308F-AB71-71529F25400B.symbols, 158C72A7-98AC-3F07-B2BE-88427591B413.symbols, 44973EAC-563E-340C-B549-55A5014A68BA.symbols , 678BF06F-0C3D-3A09-BFBF-699C7079FECD.symbols, 90907DDB-0400-38ED-BB5F-0C12333C0624.symbols, 93B79949-5757-374A-97B9-825AE1A61B7D7-08, AFA0F -4422-32B8-8C40-CF9B45A2CCC6.symbols, B0CC9F7D-C542-3E18-A518-B28B7ECABE80.symbols, BF6A4C3B-6FA5-3C51-8404-19C2F132458D.symbols, C9D6E05E9D9E9D9E9D9E9D9E9D8E9D6E9D8E -3845-BAD5-F6E51045D396.symbols, D4967AA3-8FB0-3712-B0DE-7F4144AF8F4B.symbols, D813B314-AD37-31D4-B675-442052994495.symbols, DF42A13F-08D8-3E71, FC42A13F-08D8-3E71 -8F7D-C49A36CD5C65.symbols]

Depois de corrigir os problemas, você pode usar o Xcode ou o Application Loader para carregar um novo binário no iTunes Connect.

Saudações,

A equipe da App Store

Acho que realmente não tem nada a ver comigo ou com meus aplicativos ... e é apenas uma peculiaridade dos envios de aplicativos Swift no primeiro dia? Ambos os aplicativos ainda estão no modo "Aguardando aprovação". Eu certamente não consigo pensar em nada que eu possa mudar para fazer o que eles disseram ir embora! Alguém mais enviou um aplicativo Swift e obteve essa resposta? Acha que devo ignorá-lo e esperar para ver o que acontece?

Jim Barber
fonte
O meu disse isso e Invalid Swift Support. Alguma idéia de por que eu consegui isso? Estou usando o último Xcode.
Dehli
mesmo problema aqui, e meu aplicativo não pode enviar para revisão. por causa deste problema. alguém resolveu?
precisa saber é o seguinte
1
mesma questão aqui. submetidos para revisão de qualquer maneira .. vamos ver o que acontece :)
dandoen
Ambos os meus aplicativos Swift acabaram de ser aprovados na App Store ... então acho que fiquei preocupado por nada! Ufa ... :)
Jim Barber

Respostas:

128

Isso acontece se você estiver incluindo informações de depuração de suas bibliotecas no arquivo do projeto, mas não incluindo binários.

  1. Abra a janela do organizador no Xcode
  2. Clique com o botão direito do mouse em um arquivo com esse problema e selecione "Mostrar no Finder".
  3. Clique com o botão direito do mouse no arquivo morto e selecione "Mostrar conteúdo do pacote"
  4. Na pasta "dSYMs", você verá vários arquivos. Se você executar o dwarfdumpcomando do console nesses arquivos, obterá uma lista de cadeias de caracteres UUID:

    dwarfdump -u MyFile.dSYM

Tenho certeza que você encontrará alguns UUIDs correspondentes no e-mail da Apple.

Para evitar esse aviso, você precisa incluir no seu arquivo morto apenas os dSYMarquivos do seu aplicativo e não as bibliotecas. Para isso, é necessário alterar a configuração de compilação das bibliotecas para não gerar um dSYMarquivo. Basta procurar "formato de informações de depuração" na configuração e alterá-lo de apenas DWARF with dSYM Filepara DWARF.

Por exemplo, na captura de tela abaixo, você encontrará a estrutura do Stripe iOS.

Captura de tela das configurações do projeto Xcode

Mikhail Grebionkin
fonte
13
dwarfdump -u *na pasta para ver todos os UUIDs
Jon
@ Jon ooooh por que eu vejo isso depois que eu fiz um por um? :) de qualquer maneira obrigado!
Serj Rubens
6
Remover os arquivos dSYM significa que quaisquer falhas relacionadas a terceiros não serão mais simbolizadas no Crashlytics (ou em qualquer outra ferramenta de relatório de falhas)?
Eugenio
Se você usar firebase \ fabric, no entanto, os arquivos dsym deverão ser usados ​​para exibir os logs de falha no site. Eles ainda trabalham com essa mudança?
Mattia Lancieri 24/04
88

Se você encontrou esse problema ao usar o CocoaPods, adicione-o ao seu 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

Ele definirá o Debug Information Format como DWARF apenas para todos os seus destinos de Pod (não o principal destino do aplicativo)

Denis Kutlubaev
fonte
@wzbozon Sim, peço apenas para verificar. Porque depois que eu fiz isso, os Crashlyticts param de funcionar. Obrigado!
Cesar Rodriguez
O Crashlytics deve continuar trabalhando para o seu aplicativo, pois esse script altera as configurações de compilação apenas para os pods.
Stan
1
Concordo. Mas você não verá relatórios de pods. Também é possível definir o DWARF com dSYM File apenas para alguns pods, por exemplo, pods de desenvolvimento.
Denis Kutlubaev
@ Stan você está dizendo que o Crashlytics continuará trabalhando? Cesar Rodriguez parece estar dizendo que não vai funcionar.
Airwe
8
Isso resolveu para mim. Não se esqueça depod install
firebear
17

Se você estiver usando CocoaPods e seu aplicativo estiver configurado para usar apenas arm64 (ou seja, existe apenas arm64 no info.plist do seu projeto)

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

você pode tentar adicionar o seguinte script no seu Podfile para resolver esse 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

E

defina todas as metas de seus projetos (não as de Pods) para arm64 only

Configurações do projeto Xcode

Referência de problemas do CocoaPods Github

Jerry Chen
fonte
Presumivelmente, você deve incluir arm64e também agora, não?
shim
Eu incluiria arm64s para o simulador. Ele será removido automaticamente para compilações de lançamento.
cybergen
13

Eu tenho esse problema devido ao projeto ter arquitetura válida arm64, onde os destinos CocoaPods têm arquitetura válida arm64, armv7 e armv7s .

Para verificar qual destino possui qual arquitetura válida, siga as etapas a seguir

  1. No Xcode -> Janela -> Organizador
  2. Selecione o arquivo morto e Revelar no Finder
  3. No arquivo .xcarchive , Mostrar conteúdo do pacote
  4. Abra o terminal e forneça o caminho da pasta dSYMs .

  5. Digite o comando dwarfdump --uuid *e ele mostrará a lista de UUIDs com arquiteturas válidas.

O UUID corresponderá ao e-mail de aviso da Apple

O objetivo principal do projeto e as vagens de cacau devem ter a mesma arquitetura válida. Ao fazer isso, ele resolverá o problema.

miOS
fonte
Eu acho que explica melhor o que está acontecendo. Eu tenho esses avisos apenas sobre bibliotecas com arquitetura armv7 porque meu projeto foi criado apenas para arm64. Resta a pergunta se devo adicionar armv7 ao projeto ou removê-lo dos Pods.
Ariel Bogdziewicz 16/01
6

Trabalhou para mim ativando o código de bit - ele estava desativado antes

Ativar código de bits - Sim

insira a descrição da imagem aqui

Tarun Seera
fonte
1

O item acima ajudou a solucionar problemas, mas não conseguiu resolver. Tivemos um projeto no iOS 12, mas os pods 10 - levaram a um monte de arquivos armv7. A atualização do pod para o iOS 12 foi resolvida instantaneamente.

drees
fonte
0

O mesmo problema foi corrigido com o mesmo "Geral" => "Informações de implantação" => "Destino de implantação" para todos os meus destinos.

ARR
fonte
0

No Xcode, procure em Configurações de compilação por “Remover símbolos de depuração durante a cópia” (COPY_PHASE_STRIP). Quando ativado, os símbolos de depuração são omitidos do seu .app e colocados em um arquivo .dSYM. Caso contrário, seu .app contém esses símbolos. (Por padrão, os símbolos de depuração são removidos das compilações de versão por motivos de ofuscação. Você provavelmente não deve alterar essa configuração para a configuração da versão.)

Certifique-se de marcar esta opção no projeto Build Settings

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

Sanad Barjawi
fonte
0

O problema para mim foi uma linha no meu build.xcconfigarquivo. Eu tive que remover

IPHONEOS_DEPLOYMENT_TARGET = 11.0

que estava definindo o projeto para construir apenas para arm64 (e não arm7). Seguindo as etapas, @miOSpude ver que o projeto de pods estava sendo construído para ambos.

Frank
fonte
1
stackoverflow.com/a/49063850/3293172 O iOS 11 eliminou o suporte para armv7 e armv7s, portanto, é necessário apenas arm64 se você tiver o destino de implementação> = iOS 11.0.
Ariel Bogdziewicz 16/01
-2

Para mim tudo foi muito simples. Eu tive o mesmo problema e não sabia o que fazer por uma semana.

Depois de enviar um aplicativo arquivado, você verá o certificado para distribuição na pequena janela pop-up. Há uma caixa de seleção depois da mesma, que você deve desmarcar. Depois disso, você o enviará e receberá um e-mail sobre os arquivos de símbolos. MAS não é problema. É apenas um aviso; não é um erro! Se você desmarcar essa caixa de seleção, seu aplicativo será enviado corretamente. Espero que possa ajudá-lo.

Captura de tela da caixa de seleção e do pop-up:

Captura de tela da caixa de seleção e do pop-up

emprestar
fonte
Eu realmente espero que você seja mais detalhado .... Não tenho idéia de que caixa de seleção ou pop-up você está falando. Talvez uma captura de tela?
Louis Hong
gyazo.com/6d7bb2035979cb75253ba92a40e8d898 acho que vê-lo, é este
Louis Hong
5
Sim, mas isso removerá todos os símbolos do pacote e, portanto, você não receberá relatórios de falhas simbolizados? (Será que eles ainda fornecer relatórios de falhas symbolicated na App Store aplicativos agora com TestFlight?)
Markus Rautopuro
30
Esta não é uma solução válida para o problema. Isso evita o sintoma, não resolve o problema. Veja a resposta do Mikhails para obter uma descrição de como você está carregando símbolos de que não precisa. Esta resposta previne o upload quaisquer símbolos, quebrando assim symbolication acidente via iTunesConnect
JConway
2
NÃO FAÇA ISSO, caso contrário, não será possível analisar seu aplicativo na App Store quanto a erros de falha
user924