Dalam kerangka kerja khusus yang berisi kode Objective-C dan Swift , compiler Swift menampilkan kesalahan berikut:
[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
sumber
sumber
Di Xcode 7 Beta, dengan Swift 2, ini juga akan terjadi jika Framework Header Anda tidak dideklarasikan sebagai "Publik"
Misalnya, saya memiliki Cocoa Touch Framework dengan visibilitas "Proyek" untuk file header, dan kesalahan "Umbrella Header ... tidak ditemukan" untuk semua file Swift dalam proyek saya, setelah saya memiliki header "Publik", kesalahan hilang
sumber
Ada 4 cara berbeda ini bisa terjadi, mengabaikan bug di versi Xcode sebelumnya
DEFINES_MODULE
tidak disetel keYES
CLANG_ENABLE_MODULES
tidak disetel keYES
sumber
Ini akan terjadi, ketika
Always Search User Paths
pengaturan diaktifkan untuk target Framework.Mengaturnya ke
No
akan menyelesaikan kesalahan itu.IMHO ini adalah bug di Swift Compiler dan saya telah mengajukan radar ke Apple.
Lihat rdar: // 21038443
sumber
Bagi saya - tingkat akses publik tetapi juga gagal pada payung tidak ditemukan. Saya memang memindahkan bagian "Header" dari "Fase Build" ke atas dan itu mulai berfungsi. Script ke podfile:
Tidak tahu mengapa itu terjadi. Mencoba proyek tiruan - tidak terjadi. Hanya untuk yang besar dengan banyak ketergantungan. Sesuatu dengan kompilasi SEBELUM menyalin header payung.
sumber
Podfile
File tidak valid : kesalahan sintaks, input akhir yang tidak terduga, mengharapkan kata kunci_end.Tentunya Anda harus mengatur kerangka kerja Anda ke publik:
sumber
Bagi saya, menyetel 'Gunakan Peta Kepala' ke 'TIDAK' menyelesaikan masalah
sumber
Satu solusi lagi: Setelah mengganti nama folder, lokasi lama mungkin masih terdaftar di file proyek untuk file .h, bahkan jika Anda memperbarui lokasi melalui bilah samping Xcode. Lokasi lama ini menyebabkan kesalahan tajuk payung.
Solusi sederhana: Hapus referensi ke file .h, dan tambahkan kembali. (dan ingat untuk membuatnya menjadi publik lagi!)
sumber
Saya menemukan bahwa dengan New Swift Build System dan Parallelize Build mengaktifkan skema saya akan mendapatkan kesalahan seperti dalam pertanyaan ini. Solusinya adalah menautkan ke kerangka kerja yang telah diimpor dalam file sumber cepat. (Saya pikir sebelumnya aplikasi akan dibangun karena kebetulan kerangka kerja ditautkan ke sesuatu yang dibangun sebelumnya dalam antrian pembuatan serial).
Saya menulis skrip untuk memeriksa semua impor di semua target di ruang kerja dan memastikan bahwa kerangka kerja mereka telah ditautkan ke target itu.
https://github.com/Jon889/SwiftImportChecker
sumber
Sudah ada beberapa jawaban bagus di sini. @ Shadow_x99 sangat membantu. Namun, jika saya bisa diijinkan untuk melengkapi dengan pengalaman saya sendiri.
Header payung diidentifikasi secara otomatis dalam proses pembuatan. Ini tidak ditentukan dalam setelan build target atau diwarisi dari setelan project.
Jadi untuk menghindari kesalahan ini - pada XCode 7 - adalah sebagai berikut;
warning: no umbrella header found for target 'MyTarget', module map will not be generated
dua langkah penting harus diambil.
Pertama, header umbrella harus memiliki nama yang sama dengan target . Jadi jika target Anda adalah kerangka bernama
MyTarget
, pasti ada header bernamaMyTarget.h
.Kedua, dalam fase pembuatan
MyTarget
- seperti yang disebutkan dalam jawaban itu - file header itu harus dicantumkan di bagian publik seperti yang dijelaskan di atas.sumber
Saya memiliki masalah yang sama dan tidak ada jawaban yang disarankan yang membantu dalam kasus saya, jadi saya meninggalkan ini di sini jika seseorang memiliki masalah yang sama.
Saya telah menambahkan "Jalankan skrip" dalam "Fase Build" tetapi akhirnya menghapusnya dan saat itulah saya mulai mendapatkan kesalahan.
Solusi saya akhirnya harus membersihkan proyek, membangun kembali kerangka kerja saya, dan kemudian proyek aplikasi saya dibangun dengan benar.
sumber
Dalam pengalaman saya, Anda harus memilih pada target kerangka kerja yang memberi Anda kesalahan, bukan target proyek.
Kemudian compile, dan setelah di compile akan tersedia pada project target.
sumber
Jika Anda menggunakan Xcode 7.1 dan CocoaPods 0.39, tampaknya ada perubahan kompiler cepat yang memengaruhi beberapa CocoaPods (Nimble, Quick, dll.) Coba beberapa solusi yang ditentukan di utas ini: https://github.com/ CocoaPods / CocoaPods / issues / 4420 Namun, jika tidak ada yang berfungsi, coba gunakan Xcode 7.0.1 atau 7.2 beta. Anda bisa mendapatkan keduanya di sini: https://developer.apple.com/downloads/ .
Sunting: Dalam kasus saya, untuk memperbaiki masalah, saya juga harus menurunkan versi CocoaPods ke 0.38.2.
Edit nanti: Sepertinya tidak terkait dengan Xcode 7.1. Hanya menurunkan versi CocoaPods ke 0.38.2 akan membantu:
sumber
File header Anda harus berada di bagian [Build Phases / Headers / Public].
Jika file header Anda sudah ada di bagian [Build Phases / Headers / Public], berkali-kali melakukan fallowing memecahkan masalah saya:
sumber
Saya menyelesaikan ini dengan mengganti nama module.modulemap saya menjadi moduleXYZ.modulemap dan mengubah nama file modulemap dalam pengaturan proyek
sumber
Dalam kasus saya, saya baru saja membangun kerangka kerja khusus dengan skema itu. Dan kemudian membangun kembali seluruh proyek dan menyelesaikan masalah
sumber
pastikan "jalur impor" dalam Pengaturan Build menyertakan file yang Anda coba sertakan ...
sumber
Hapus file-file ini dari direktori proyek.
.xcworkspace
pods/
danpodfile.lock
perbarui pod dan buat proyek.
sumber
Saya memperbaikinya dengan membuat Mode Kompilasi dari kerangka kerja yang bermasalah membangun pengaturan ke Incremental.
sumber
Dalam kasus saya, masalah disebabkan oleh hapus skrip header di Build Phases
Menghapus skrip ini memperbaiki masalah.
sumber
Tak satu pun dari 9 jawaban yang membantu saya, jadi saya mencoba membuat proyek baru yang dapat saya kirim ke Apple untuk melaporkan bug. Saya terkejut karena saya tidak dapat mereproduksi masalah tersebut. Saya memeriksa pengaturan build dan mereka setara. Rupanya ini semacam bug.
Jika tidak ada yang membantu , coba buat proyek baru dan impor setidaknya beberapa kelas Objective C & Swift dari proyek Anda saat ini, bandingkan pengaturan build terkait kerangka kerja Anda dengan nilai default dari proyek baru, dan akhirnya pindahkan semua file ke proyek baru.
sumber
Saya telah mengerjakannya sepanjang hari, tetapi itu sepadan. Saya mencoba semua cara di sini, tetapi saya tidak menyelesaikannya. Saya membuat sebuah proyek baru, percobaan, dan saya menemukan Pengguna header Cari Jalan setted $ {SRCROOT} rekursif , dan aku berubah ke $ {SRCROOT} non-rekursif , mengubah jalur bridging header (misalnya
#import "SVProgressHUD.h"
->#import "Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"
), yang kesalahan hilang.sumber