Em uma estrutura personalizada contendo código Objective-C e Swift , o compilador Swift gera o seguinte erro:
[build_path]/unextended-module.modulemap:2:19: error: umbrella header 'bugtest.h' not found
umbrella header "bugtest.h"
^
<unknown>:0: error: could not build Objective-C module 'bugtest'
ios
swift
ios-frameworks
Tim Bodeit
fonte
fonte
No Xcode 7 Beta, com o Swift 2, isso também acontecerá se o cabeçalho do seu Framework não for declarado como "Público"
Por exemplo, eu tinha um Cocoa Touch Framework com uma visibilidade de "Projeto" para o arquivo de cabeçalho e o erro "Cabeçalho de guarda-chuva ... não encontrado" para todos os arquivos Swift em meu projeto, uma vez que tinha o cabeçalho "Público", o erro foi embora
fonte
Existem 4 maneiras diferentes de isso acontecer, ignorando bugs em versões anteriores do Xcode
DEFINES_MODULE
não está definido paraYES
CLANG_ENABLE_MODULES
não está definido paraYES
fonte
Isso acontecerá quando a
Always Search User Paths
configuração for habilitada para o destino do Framework.Configurá-lo como
No
resolverá esse erro.IMHO, este é um bug no Compilador Swift e preenchi um radar com a Apple.
Veja rdar: // 21038443
fonte
Para mim - o nível de acesso era público, mas também falha no guarda-chuva não encontrado. Mudei a seção "Cabeçalhos" das "Fases de construção" para o topo e começou a funcionar. Script para podfile:
Não tenho ideia do por que isso está acontecendo. Tentei em projetos fictícios - não está acontecendo. Apenas em grandes com várias dependências. Algo com a compilação ANTES de copiar os cabeçalhos guarda-chuva.
fonte
Podfile
Arquivo inválido : erro de sintaxe, fim de entrada inesperado, esperando keyword_end.Definitivamente, você deve definir sua estrutura como pública:
fonte
Para mim, definir 'Usar mapas de cabeçalhos' como 'NÃO' resolveu o problema
fonte
Mais uma solução: depois de renomear uma pasta, o local antigo ainda pode estar listado no arquivo de projeto para o arquivo .h, mesmo se você atualizou o local por meio da barra lateral do Xcode. Este local antigo causa o erro de cabeçalho guarda-chuva.
Solução simples: Remova a referência ao arquivo .h e adicione novamente. (e lembre-se de torná-lo público novamente!)
fonte
Descobri que, com o novo sistema Swift Build e Parallelize Build ativados, eu obteria erros como nesta pergunta. A solução foi vincular a estruturas que foram importadas nos arquivos de origem do swift. (Acho que anteriormente o aplicativo seria compilado porque simplesmente aconteceu que as estruturas estavam vinculadas a algo criado anteriormente na fila de compilação serial).
Eu escrevi um script para passar por todas as importações em todos os destinos em um espaço de trabalho e ter certeza de que suas estruturas foram vinculadas a esse destino.
https://github.com/Jon889/SwiftImportChecker
fonte
Já existem algumas respostas excelentes aqui. @ Shadow_x99 foi muito útil. No entanto, se eu pudesse complementar com minha própria experiência.
Um cabeçalho guarda-chuva é identificado automaticamente no processo de construção. Não é especificado nas configurações de construção do destino ou herdado das configurações do projeto.
Portanto, para evitar este erro que - a partir do XCode 7 - é o seguinte;
warning: no umbrella header found for target 'MyTarget', module map will not be generated
dois passos importantes devem ser dados.
Em primeiro lugar, o cabeçalho guarda-chuva deve ter o mesmo nome do destino . Portanto, se o seu destino for uma estrutura chamada
MyTarget
, deve haver um cabeçalho chamadoMyTarget.h
.Em segundo lugar, nas fases de construção
MyTarget
- conforme mencionado na resposta - esse arquivo de cabeçalho deve ser listado na seção pública conforme detalhado acima.fonte
Eu tive o mesmo problema e nenhuma das respostas sugeridas ajudou no meu caso, então estou deixando isso aqui para o caso de alguém ter o mesmo problema.
Eu tinha adicionado um "script de execução" em "fases de construção", mas acabei removendo-o e foi quando comecei a receber o erro.
Minha solução acabou tendo que limpar o projeto, reconstruir minha estrutura e então meu projeto de aplicativo construído corretamente.
fonte
Em minha experiência, você deve escolher nos alvos a estrutura que está causando o erro, não o alvo do projeto.
Em seguida, compile e, após compilar, estará disponível no destino do projeto.
fonte
Se você estiver usando o Xcode 7.1 e CocoaPods 0.39, parece haver uma mudança rápida no compilador que afeta alguns CocoaPods (Nimble, Quick, etc.) Experimente algumas das soluções especificadas neste tópico: https://github.com/ CocoaPods / CocoaPods / issues / 4420 entretanto, se nenhum deles funcionar, tente usar o Xcode 7.0.1 ou 7.2 beta. Você pode obter os dois aqui: https://developer.apple.com/downloads/ .
Edit: No meu caso, para corrigir o problema, também tive que fazer o downgrade do CocoaPods para 0.38.2.
Edição posterior: Parece não estar relacionado ao Xcode 7.1. Apenas fazer o downgrade do CocoaPods para 0.38.2 deve ajudar:
fonte
Seu arquivo de cabeçalho precisa estar na seção [Build Phases / Headers / Public].
Se o seu arquivo de cabeçalho já estiver na seção [Build Phases / Headers / Public], muitas vezes fazer o seguinte resolveu meu problema:
fonte
Resolvi isso renomeando meu module.modulemap para moduleXYZ.modulemap e alterando o nome do arquivo modulemap nas configurações do projeto
fonte
No meu caso, acabei de construir a estrutura específica com seu esquema. E então reconstruir todo o projeto e resolver o problema
fonte
Remova esses arquivos do diretório do projeto.
.xcworkspace
pods/
epodfile.lock
atualize o pod e construa o projeto.
fonte
Eu corrigi-lo tornando o modo de compilação das configurações de compilação do framework problemático para incremental.
fonte
No meu caso, o problema foi causado pelo script de remoção de cabeçalhos nas fases de construção
Excluir esse script corrigiu o problema.
fonte
Nenhuma das 9 respostas me ajudou, então tentei criar um novo projeto que pudesse enviar à Apple para registrar um bug. Fiquei surpreso por não conseguir reproduzir o problema. Verifiquei as configurações de compilação e elas eram equivalentes. Aparentemente, é algum tipo de bug.
Se nada mais ajudar , tente criar um novo projeto e importar pelo menos algumas classes Objective C e Swift do seu projeto atual, compare as configurações de construção relacionadas ao framework com os valores padrão do novo projeto e, eventualmente, mova todos os arquivos para o novo projeto.
fonte
Estou trabalhando nisso há um dia inteiro, mas vale a pena. Tentei de todas as maneiras aqui, mas não resolvi. Eu criei um novo projeto, um experimento, e descobri que o caminho de pesquisa do cabeçalho do usuário foi definido como $ {SRCROOT} recursivo e mudei para $ {SRCROOT} não recursivo , mudei o caminho do cabeçalho de ponte (por exemplo
#import "SVProgressHUD.h"
->#import "Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"
), o o erro foi embora.fonte