В настраиваемой платформе, содержащей код Objective-C и Swift , компилятор Swift выдает следующую ошибку:
[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
Тим Бодейт
источник
источник
В Xcode 7 Beta со Swift 2 это также произойдет, если ваш заголовок Framework не объявлен как «Public»
Например, у меня была Cocoa Touch Framework с видимостью «Project» для файла заголовка и с ошибкой «Umbrella Header ... not found» для всех файлов Swift в моем проекте, как только у меня был заголовок «Public», ошибка исчезла
источник
Это может произойти 4 различными способами, игнорируя ошибки в предыдущих версиях Xcode.
DEFINES_MODULE
не установлен наYES
CLANG_ENABLE_MODULES
не установлен наYES
источник
Это произойдет, когда
Always Search User Paths
параметр включен для цели Framework.Установка этого значения
No
устранит эту ошибку.IMHO, это ошибка в Swift Compiler, и я отправил радар в Apple.
См. Rdar: // 21038443
источник
Для меня уровень доступа был общедоступным, но он также не работает на зонтике, который не найден. Я переместил раздел «Заголовки» в «Фазы сборки» наверх, и он начал работать. Скрипт к подфайлу:
Понятия не имею, почему это происходит. Пробовал на фиктивных проектах - не получается. Только на больших с множеством зависимостей. Что-то с компиляцией ПЕРЕД копированием зонтичных заголовков.
источник
Podfile
файл: синтаксическая ошибка, неожиданный конец ввода, ожидается keyword_end.Определенно вы должны сделать свою структуру общедоступной:
источник
Для меня установка "Использовать карты заголовков" на "НЕТ" решила проблему.
источник
Еще одно решение: после переименования папки старое местоположение все еще может быть указано в файле проекта для файла .h, даже если вы обновили местоположение через боковую панель Xcode. Это старое расположение вызывает ошибку заголовка зонтика.
Простое решение: удалите ссылку на файл .h и снова добавьте. (а затем не забудьте снова сделать это общедоступным!)
источник
Я обнаружил, что при включенной схеме New Swift Build System и Parallelize Build я получаю ошибки, подобные этому вопросу. Решением было связать фреймворки, которые были импортированы в исходные файлы swift. (Я думаю, что раньше приложение создавалось, потому что так случилось, что фреймворки были связаны с чем-то, созданным ранее в очереди последовательной сборки).
Я написал сценарий, чтобы выполнить весь импорт во всех целевых объектах в рабочей области и убедиться, что их фреймворки связаны с этой целью.
https://github.com/Jon889/SwiftImportChecker
источник
Здесь уже есть отличные ответы. @ Shadow_x99 был очень полезен. Однако, если бы мне было позволено дополнить его своим собственным опытом.
Заголовок зонтика определяется автоматически в процессе сборки. Он не указан в настройках целевой сборки и не унаследован от настроек проекта.
Итак, чтобы избежать этой ошибки, которая - по состоянию на XCode 7 - выглядит следующим образом:
warning: no umbrella header found for target 'MyTarget', module map will not be generated
Необходимо сделать два важных шага.
Во-первых, заголовок зонтика должен иметь то же имя, что и цель . Поэтому, если ваша цель - это платформа с именем
MyTarget
, должен быть заголовок с именемMyTarget.h
.Во-вторых, на этапах сборки
MyTarget
- как указано в этом ответе - этот файл заголовка должен быть указан в общедоступном разделе, как описано выше.источник
У меня была такая же проблема, и ни один из предложенных ответов не помог в моем случае, поэтому я оставляю это здесь, если у кого-то такая же проблема.
Я добавил «Выполнить сценарий» в «Фазы сборки», но в итоге удалил его, и именно тогда я начал получать ошибку.
Мое решение закончилось тем, что мне пришлось очистить проект, перестроить мою структуру, а затем мой проект приложения был построен правильно.
источник
По моему опыту, вы должны выбирать в качестве целей фреймворк, который выдает ошибку, а не цель проекта.
Затем скомпилируйте, и после компиляции он будет доступен для цели проекта.
источник
Если вы используете Xcode 7.1 и CocoaPods 0.39, похоже, происходит быстрое изменение компилятора, которое влияет на некоторые CocoaPods (Nimble, Quick и т. Д.). Попробуйте некоторые из решений, указанных в этом потоке: https://github.com/ Однако CocoaPods / CocoaPods / issues / 4420 , если ни один из них не работает, попробуйте использовать Xcode 7.0.1 или 7.2 beta. Вы можете получить их оба здесь: https://developer.apple.com/downloads/ .
Изменить: в моем случае, чтобы решить эту проблему, мне также пришлось понизить версию CocoaPods до 0.38.2.
Позднее редактирование: похоже, это не связано с Xcode 7.1. Просто понижение версии CocoaPods до 0.38.2 должно помочь:
источник
Ваш заголовочный файл должен находиться в разделе [Build Phases / Headers / Public].
Если ваш файл заголовка уже находится в разделе [Build Phases / Headers / Public], много раз выполнение следующих действий решило мою проблему:
источник
Я решил это, переименовав свой module.modulemap в moduleXYZ.modulemap и изменив имя файла modulemap в настройках проекта.
источник
В моем случае я просто построил конкретный фреймворк с его схемой. А затем перестройте весь проект, и проблема решена.
источник
убедитесь, что "пути импорта" в настройках сборки включают файл, который вы пытаетесь включить ...
источник
Удалите эти файлы из каталога проекта.
.xcworkspace
pods/
иpodfile.lock
обновите модуль и соберите проект.
источник
Я исправил это, установив режим компиляции проблемных настроек сборки фреймворка на инкрементный.
источник
В моем случае проблема была вызвана скриптом удаления заголовков на этапах сборки.
Удаление этого скрипта устранило проблему.
источник
Ни один из 9 ответов мне не помог, поэтому я попытался создать новый проект, который можно было бы отправить в Apple, чтобы сообщить об ошибке. Я был удивлен, что не смог воспроизвести проблему. Я проверил настройки сборки, они были эквивалентны. Видимо это какой-то баг.
Если ничего не помогает , попробуйте создать новый проект и импортировать хотя бы некоторые классы Objective C и Swift из текущего проекта, сравните параметры сборки, связанные с вашей платформой, со значениями по умолчанию из нового проекта и, в конечном итоге, переместите все файлы в папку новый проект.
источник
Целый день над этим работаю, но оно того стоит. Пробовал все способы тут, но не решила. Я создал новый проект, эксперимент и обнаружил, что путь поиска заголовка пользователя был установлен рекурсивным $ {SRCROOT} , и я изменил его на нерекурсивный $ {SRCROOT} , изменил путь заголовка моста (например
#import "SVProgressHUD.h"
->#import "Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"
), ошибка исчезла.источник