Chave CFBundleExecutable inesperada


98

Depois de passar algum tempo pesquisando no Google, algo me diz que o problema é novo.

Tínhamos um projeto totalmente funcional com suporte para iOS7-8. É claro que ele foi enviado várias vezes com sucesso à AppStore.

Usamos pods, muito rastreamento e monitoramento, como GA e Instabug.

Agora decidimos enviar uma versão do aplicativo desenvolvido no Xcode 7 no iOS 9 para TestFlight.

Desabilitamos o bitcode, já que muitos pods, como o Flurry e outras bibliotecas pré-construídas, não o incluem.

A construção foi bem-sucedida, após o envio ao iTunesConnect, obtemos o seguinte: insira a descrição da imagem aqui

Tínhamos o mesmo para a biblioteca GoogleAppIndexing (em pods também), mas removemos, apenas para fazer funcionar. Agora - Instabug. Está indo longe demais, então estou tentando entender o que está acontecendo no iOS 9 e quais são as mudanças que fizeram um projeto funcionar totalmente para começar a lançar tais erros.

Quaisquer pensamentos e ideias são bem-vindos! Por favor, compartilhe sua experiência, e se eu perdi algo, terei prazer em compartilhar meus passos.


2
Você resolveu este problema? Também estou enfrentando esse problema, mas é GoogleMaps.bundle ...
— Johnny

1
Não, ainda não. Parece que é um problema genérico.
— Dumoko

Isso é realmente irritante :(, eu perguntei no fórum de desenvolvedores da Apple, veja se alguém tem esse problema. Forums.developer.apple.com/message/42851#42851
— Johnny

Estamos vendo isso também em uma nova integração com o Startapp. Também iOS 9 e Xcode 7 beta 5.
— Trey Bean

2
Moataz da Instabug aqui. Você pode substituir o Instabug.bundle que você tem por este dropbox.com/s/37zwhaqzatfnz3n/Instabug.bundle.zip?dl=0 , me diga como está
— Moataz Soliman

Respostas:


112

Eu encontrei o mesmo problema hoje com a mesma mensagem de erro exata ao tentar enviar nosso aplicativo (usando o Xcode 7 beta 5), ​​mas em vez do instabug.bundlebit, era para mim TencentOpenApi_IOS_Bundle.bundle.

Resolvi o problema encontrando o pacote nomeado no projeto e - assim como a mensagem de erro sugere - editei o Info.plistque está no pacote removendo a CFBundleExecutablechave. A CFBundlePackageTypechave já estava definida para, BNDLentão não toquei nela.

Após essas alterações, selecionei Produto> Limpar e não tive problemas em enviar o aplicativo para a App Store.

Eu espero que isso ajude.


2
Obrigado por compartilhar sua experiência! Portanto, é o problema do autor da biblioteca. Mas nós, desenvolvedores, não devemos fazer esses truques ... Por exemplo, eu uso pods e um sistema de CI. Eu não posso ir para o CI e todas as vezes após a instalação do pod fazer esta mudança manual. Mas pelo menos o teremos funcionando. Até agora estou procurando uma solução genérica. Se não vier logo, marcarei sua resposta como a que ajuda. Obrigado de novo!
— Dumoko de

Eu não posso fazer isso. Se estou tentando abrir info.plist dentro do pod no Xcode, ele me diz que o arquivo está bloqueado e as alterações não serão salvas (e não são). Se eu usar um editor de texto externo, posso ver o conteúdo do arquivo plist de alguma forma codificado, não é um texto simples.
— Mike Keskinov,

@MikeKeskinov, este link pode ser útil: [ apple.stackexchange.com/questions/68646/… ? Ele sugere encontrar o info.plist no Finder e editar as permissões do arquivo para permitir que você o edite no Xcode.
— Sleiman,

Eu também tive um problema semelhante e relatei à Apple. Seus passos estão absolutamente corretos conforme sugerido pela Apple. bugreport.apple.com/problem/viewproblem
— Avinash

Eu escrevi um script de shell para remover isso como uma solução alternativa. Você adiciona isso como um script de execução durante as fases de construção do seu projeto: gist.github.com/brightredchilli/ca63430518f0daa4dfa9
— Ying

52

Encontrei isso com AviarySDK no Xcode 7 GM, ao enviar para a App Store.

Primeiro, verificaria se você está usando a versão mais recente de sua biblioteca - o fornecedor pode já ter corrigido isso. Se você ainda está enfrentando esse problema, no entanto, como Sleiman descreve, você precisa remover oCFBundleExecutable chave do arquivo plist para a biblioteca .

Cmd + Shift + O e digite "Info.plist", você pode encontrar o arquivo apropriado:

insira a descrição da imagem aqui

Depois de editar o plist, você pode ver nomes descritivos (em vez de CFBundleExecutablee outras chaves. Não consegui editar este arquivo em um editor externo, então tive que mudar para ver as chaves / valores brutos clicando com o botão direito na lista:

insira a descrição da imagem aqui

Agora você pode ver o CFBundleExecutable chave (que tem uma descrição de "Arquivo executável") que você pode excluir.

Para AviarySDK, fiz isso duas vezes, uma para cada Info.plistvisto na imagem acima, e consegui enviar com êxito.


Você sabe quais são os efeitos colaterais disso? Estou tendo o mesmo problema com o pacote Polljoy. Você acha que essa entrada está erroneamente apenas no plist?
— Stoff81 de

1
"O Xcode adiciona automaticamente essa chave ao arquivo de lista de propriedades de informações dos projetos apropriados." Me desculpe, eu não posso te dizer os efeitos colaterais, porém eu suspeito que é devido ao uso de uma biblioteca mais antiga que não tenha sido distribuído com suporte para Frameworks, e depois Xcode tenta tratá-lo o mesmo que aquele que faz ter suporte para Frameworks.
— Adam S de

Infelizmente, para algumas bibliotecas (por exemplo, AppIndexing etc), o conteúdo do arquivo plist parece estar criptografado. Ele permite que você visualize, mas não salva nenhuma alteração. Ao tentar abrir um arquivo fora do XCode, fica claro que o arquivo está criptografado (sem texto simples).
— Mike Keskinov

funcionou para o login do google e me permitiu fazer upload para a App store
— James,

2
Acabei de encontrar o mesmo problema com Aviary e Cocoapods 0,39. Sua correção sugerida parece funcionar. Parece que é hora de morder a bala e mudar para AdobeCreativeSDK :(
— Keab42

11

Eu resolvo este problema da seguinte maneira: Temos que remover todos os "Arquivos executáveis" dos seguintes pacotes:

  • GooglePlus.bundle
  • GPPCommonSharedResources.bundle
  • GPPShareboxSharedResources.bundle

Certifique-se de que "Código de tipo de pacote" é igual a BNDL

Importante: Não edite nada no info.plist do projeto principal.

Telas anexadas como devem ser seu "info.plist" listado acima de cada pacote.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui



5

Se a compilação for enviada por meio de Less than (<) Xcode 7.0 , ela será enviada e também resolvi da seguinte forma para o Xcode 7 :

Procurado info.plistno Project Navigator como a seguinte imagem:

insira a descrição da imagem aqui

Agora abra esses info.plistarquivos um por um e exclua a BundleExecutablechave EXCETO o do alvoinfo.plist

Agora limpei o projeto e consegui e é apresentado sem problemas.


4

Tive o mesmo problema na biblioteca do Google Maps, removi a CFBundleExecutablechave de dentro GMSCoreResources.bundle( Info.plist) que é o projeto info.plist de limpeza do SDK e carreguei para appstore.

Boa programação.

insira a descrição da imagem aqui


1

Basta verificar suas configurações de compilação => Ativar código de bits e defini-lo como NÃO


0

Uma observação adicional: às vezes, se você tiver alvos adicionais, haverá propriedades de alvo que também podem incluir a chave (na seção "Informações"), portanto, certifique-se de verificá-los e removê-los de lá também. Descobri isso com um dos pacotes que estava tentando incluir. Excluí as informações do plist, mas continuava recebendo o erro.


0

Se você está vendo este erro de uma biblioteca instalada via CocoaPods, tente um pod update <OFFENDING POD NAME>

Isso resolveu o problema para mim.


0

Acabei de adicionar a palavra "BNDL" ao local apropriado em plist"Código de tipo de sistema operacional do criador do pacote".

Esse era o problema


0

No meu caso, eu apenas arrasto e solto o arquivo de SDKinclusão da pasta In info.plistque não está em uso. Isso cria o problema para mim. Portanto, encontre o info.plistarquivo não utilizado e exclua-o do código-fonte.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.