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.