Saya telah membenturkan kepala saya ke dinding dengan ini selama beberapa hari terakhir tetapi meskipun banyak pencarian Google / SO / Github, saya tidak dapat menemukan resolusi untuk masalah yang saya alami!
Yang saya coba lakukan adalah membuat beberapa pengujian unit untuk aplikasi saya yang menggunakan pod Firebase.
Saya menggunakan Xcode 7.3.1 & Cocoapods 1.0.1. Pembaruan: Masalah tetap dengan Xcode 8.0
Dengan podfile ini:
platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!
target 'MyApp' do
pod 'Firebase'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Storage'
target 'MyAppTests' do
inherit! :search_paths
end
end
Di kelas XCTest saya, saya dapatkan
Modul 'Firebase' yang diperlukan tidak ada
kesalahan di @testable import MyApp
Alternatifnya dengan podfile ini:
platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!
def common_pods
pod 'SwiftyTimer'
pod 'Firebase'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Storage'
end
target 'MyApp' do
common_pods
end
target 'MyAppTests' do
common_pods
end
Tes dibangun tetapi konsol saya dipenuhi dengan peringatan misalnya:
Kelas <-FirebaseClassName-> diimplementasikan di ... MyApp ... dan ... MyAppTests ... Salah satu dari keduanya akan digunakan. Mana yang belum ditentukan
Jawaban:
Saya memiliki masalah yang sama. Saya menyelesaikannya dengan pindah
pod 'Firebase'
ke target pengujian saya. Ubah Podfile Anda menjadi ini:sumber
pod install
.pod install
untuk memperbarui dependensi proyek;)Coba ubah warisan menjadi
:complete
, seperti dalam:Yang penting, ini memungkinkan orang lain memeriksa repo Anda untuk hanya melakukan
pod update
seperti biasa tanpa harus menyalin.xcconfig
file atau peretasan lain hanya untuk membangun.sumber
Contoh
sumber
Masalahnya adalah Firebase melakukan sesuatu yang khusus dengan Jalur Pencarian Header setelah CocoaPods menghasilkan nilainya sendiri untuk setelan tersebut sehingga CocoaPods tidak mengambil perubahan ini untuk membawanya ke target pengujian. Anda dapat menyelesaikan ini dengan salah satu dari dua cara:
Temukan
MyAppTests.<configuration>.xcconfig
di navigator file dan tambahkan yang berikut ini keHEADER_SEARCH_PATHS
:${PODS_ROOT}/Firebase/Analytics/Sources
[*]Temukan pengaturan untuk Jalur Pencarian Header di Pengaturan Bangun dan tambahkan nilai yang sama seperti pada opsi 1 ke daftar. Anda tidak perlu menyetelnya sebagai rekursif.
* Sesuai komentar AKM, ini berubah menjadi
${PODS_ROOT}/Firebase/Core/Sources
di versi 3.14.0sumber
${PODS_ROOT}/Firebase/Core/Sources
inherit! :search_paths
target pengujian diPodfile
.Tiga Langkah sebelum saya bisa membuatnya bekerja:
CocoaPods: 1.5.0 Swift 4 Firebase: 4.13.0
Langkah 1: Pastikan untuk menambahkan blok target berikut ke dalam podfile Anda.
Langkah 2: Di dalam tab Pengaturan Build YourAppTests Project Navigator. Temukan baris Header Search Path dan tambahkan ke Debug baris berikut
Langkah 3: Dalam menjalankan terminal:
sumber
Masalahnya dicatat dalam proyek firebase di sini:
https://github.com/firebase/firebase-ios-sdk/issues/58
Ada solusinya:
tetapi ini juga diperbaiki dengan meningkatkan ke CocoaPods 1.4.0 atau yang lebih baru, yang merupakan solusi yang lebih baik.
Saat saya menulis ini (November 2017) cocoapods 1.4.0 masih dalam versi beta, jadi untuk menginstalnya Anda perlu secara eksplisit meminta versi beta:
Ini dan kemudian melakukan
pod install
memecahkan masalah menjalankan tes saya.sumber
pod install
setelah meningkatkan?pod install
memecahkan masalah saya! Terima kasih banyak!Solusi bagi saya adalah memperbarui cocoapods ke versi 1.1.0.rc.2.
sudo gem install cocoapods --pre
sumber
Saya mencoba semua hal di atas dan mengalami berbagai error yang berbeda, awalnya dimulai dengan
Missing required module 'Firebase'
, kemudian mendapatkan"Class ... is implemented in both ... "
atau masalah linker jika saya mencoba menambahkan Firebase Pod ke target pengujian saya.Solusi yang berhasil bagi saya adalah:
$(inherited) non-recursive
$(SRCROOT)/Pods/Headers/Public recursive
$(SRCROOT)/Pods/Firebase recursive
Pada titik ini, membersihkan folder build, membangun kembali, lalu menjalankan ulang pengujian berhasil untuk saya. Semoga ini bisa membantu seseorang!
sumber
Menambahkan
${SRCROOT}/Pods/Firebase/CoreOnly/Sources
ke dalam "Jalur pencarian header" target pengujian unit memperbaiki masalah. Langkah:Setelah ini tes dapat berjalan dan kesalahan akan hilang.
sumber
Saya memiliki masalah serupa. Berdasarkan pertanyaan Anda, saya menyalin konten
MyApp.<configuration>.xcconfig
file saya keMyAppTests.<configuration>.xcconfig
file saya . Saya membersihkan dan membuat tes, dan itu berhasil.sumber
Tambahkan "$ {PODS_ROOT} / Firebase / Core / Sources" ke target Tes Anda hanya di Build Settings -> Header Search Paths
sumber
Seperti @Will menyebutkan masalah seputar Jalur Pencarian Header setelah penginstalan CocoaPods.
Saya memiliki proyek dengan beberapa target di mana pod 'Firebase' disematkan ke modul terpisah, katakanlah
MyProject-Shared
. Pod Firebase di 'Podfile' hanya dipasang untuk target 'MyProject-Shared'. Modul lain, yang ingin menggunakan 'MyProject-Shared' tidak dapat dikompilasi karena kesalahan:'modul yang diperlukan "Firebase"' tidak ada
Trik dalam kasus saya adalah menambahkan jalur pencarian tajuk yang hilang berikut ini di setiap Pengaturan Build target yang merujuk ke Kerangka-Analisis :
"${PODS_ROOT}/Firebase/CoreOnly/Sources"
Silakan lihat gambar di bawah ini:
Semoga ini akan menghemat waktu Anda.
sumber
Metode sederhana yang juga berfungsi:
sumber
Missing required module Firebase
TIDAK ADA solusi CocoaPodsBagi mereka yang mengalami masalah yang sama tetapi TIDAK menggunakan CocoaPods:
Jika Anda menggunakan Firebase, maka Anda memiliki beberapa folder yang berisi
Firebase.h
danmodule.modulemap
file. Sebagai contoh -YOUR_PROJECT_DIR/Linking
Jika target proyek utama Anda bekerja dengan benar, maka Anda harus pergi ke ProjectSettings -> T Target. Pilih target pengujian. Cari
User headers
dan tambahkan jalur keYOUR_PROJECT_DIR/Linking
. Pilihrecursive
opsi dan Anda sebaiknya pergi.Lihat tangkapan layar untuk lebih jelasnya:
sumber