Obecnie koduję w Swift i mam błąd:
Brak takiego modułu Społecznościowy
Ale nie rozumiem, ponieważ moduł jest w moim projekcie, zadeklarowany w „Powiązanych ramach i bibliotekach” oraz „Wbudowanych plikach binarnych”.
Frameworki są w Objective-C, więc napisałem dla nich nagłówek Bridge.
Proszę, w jaki sposób mogę sprawić, by Xcode rozpoznał ramę?
#import "Social/Social.h"
platform :ios, '10.0'
. To było rozwiązanie.Odpowiedzi:
Nie jestem pewien, dlaczego tak się dzieje, ale jednym ze sposobów rozwiązania tego problemu jest przejście do ustawień kompilacji i zdefiniowanie Ścieżek przeszukiwania ram do folderu zawierającego te ramy. Jeśli frameworki zostaną umieszczone w katalogu projektu, wystarczy ustawić ścieżkę wyszukiwania frameworka
$(SRCROOT)
i ustawić rekurencję.źródło
Project Build Settings
zamiastTarget Build Settings
.Jeśli jest piątek po południu lub w dowolnym momencie po 1 w nocy:
Otwarcie
xcodeproj
zamiastxcworkspace
spowoduje błąd taki jak ten ...źródło
Upewnij się, że nazwy twoich konfiguracji w podprojektach odpowiadają nazwom projektu „nadrzędnego”. Jeśli nazwa konfiguracji nie pasuje dokładnie (wielkość liter ma znaczenie), Xcode przerwie proces archiwizacji i wyświetli błąd „Brak takiego modułu ...”
Oznacza to, że jeśli masz projekt „nadrzędny” z konfiguracją o nazwie „AppStore”, musisz upewnić się, że wszystkie podprojekty również mają tę nazwę konfiguracji.
Zobacz moje załączone zrzuty ekranu.
źródło
Debug
aDistribution
i jego projekt rodzic stara się zbudować dlaRelease
. Rozwiązaniem było zrobienie kopiiDistribution
w projekcie podrzędnym i zmiana nazwy tej kopiiRelease
.Nie jestem do końca pewien, dlaczego odpowiedź Martina R w komentarzach do pytania jest tak lekceważona:
Upewnij się, że próbowałeś po prostu pominąć import frameworka, ponieważ jest on już dodany z nagłówkiem pomostowym .
Mam nadzieję że to pomoże
źródło
Miałem ten sam problem podczas używania Cocoapods i Swift . Nie zauważyłem następujących wierszy w Podfile:
Wszystko, co musiałem zrobić, to zmienić na:
... i zadziałało :)
źródło
Porównaj ten zrzut ekranu z ustawieniem kompilacji. Może to zadziała. Przejdź do ścieżki wyszukiwania frameworka:
źródło
Miałem również ten problem. Dla mnie poprawka polegała na tym, że schematy Archiwum między dwoma projektami nie pasowały. Mam XCworkspace z projektem ramowym i projektem aplikacji. Problem polegał na tym, że w schemacie archiwizacji dla mojej aplikacji korzystałem z innej konfiguracji kompilacji niż w schemacie archiwizacji. Ustawiłem obie konfiguracje kompilacji na Wydanie i to rozwiązało problem.
źródło
Poniższe kroki działały dla mnie.
"pod update"
w terminalu.xcworkspace
i buduj ponownie.źródło
pod install
tym jak działa.W moim przypadku, po wielu próbach ustalenia, co robiłem źle, importując framework, w końcu odkryłem, że sam szkielet był problemem. Jeśli nie otrzymujesz frameworka z zaufanego źródła, powinieneś sprawdzić frameworkę i upewnić się, że zawiera on folder Modules z plikiem module.modulemap. Jeśli moduł.modulemap nie jest obecny, pojawi się błąd „Brak takiego modułu„ MyFramework ””.
Jeśli w folderze Modules brakuje folderu „MyFramework.swiftmodule”, wówczas szkielet zostanie znaleziony, ale Xcode nie będzie wiedział o jego zawartości, więc wystąpią różne błędy.
źródło
Zakładając, że Framework naprawdę istnieje i znajduje się na ścieżce itp.… Usuń katalog ~ / Library / Developer / Xcode / DerivedData / ModuleCache (i wyczyść projekt i usuń dane pochodne właściwe dla projektu).
Podczas standardowego czyszczenia katalog ModuleCache nie jest odbudowywany.
źródło
Dla mnie zadziałało to rozwiązanie innego pytania. Zamykanie Xcode i ponowne otwieranie projektu jako obszaru roboczego.
Przejdź do folderu projektu i otwórz
.xcodeworkspace
plik.Po otwarciu obszaru roboczego (zamiast projektu) kapsuły powinny pojawiać się jako projekt najwyższego poziomu w Nawigatorze projektów.
źródło
Upewnij się, że
Find implicit Dependencies
opcja Budowanie w schemacie jest włączona!źródło
Kilka dni temu napotkałem ten sam błąd. Oto jak rozwiązałem problem:
Błąd to „moduł nie został znaleziony”
Przejdź do ustawień kompilacji projektu:
Utwórz nowy plik nagłówka pomostowego: np. TestProject-Bridging-Header.h i umieść w Swift Compiler → Nazwa nagłówka interfejsu wygenerowanego przez Objective-C (zob. Obrazek powyżej)
To wszystko.
źródło
Ok, jak udało mi się rozwiązać ten sam problem, to ustawić położenie danych pochodnych względem katalogu obszaru roboczego zamiast pozostawić go domyślnym. Przejdź do preferencji w xcode. Przejdź do zakładki lokalizacji w preferencjach i ustaw Dane pochodne na Względne. Mam nadzieję, że to pomoże.
źródło
Otrzymałem ten sam błąd dla
Ale potem zauważyłem, że nie dodawałem kapsuły do głównej sekcji celu, a jedynie dodawałem do celów Test i TestUI w Podfile.
Za pomocą polecenia
dla szybkiego projektu xcode generowany jest następujący plik podfile
Więc upewnij się, że dodajesz strąki do każdego odpowiedniego symbolu zastępczego.
źródło
Jeśli budujesz platformę taką jak tvOS, upewnij się, że masz wybrany symulator Apple TV (tj. Dopasowywanie).
Zbudowanie aplikacji tvOS z wybranym symulatorem iOS dało mi dokładnie ten błąd. Spędziłem większą część godziny, szukając różnego rodzaju problemów z kompilacją ... doh.
źródło
W moim przypadku aplikacja IPHONEOS_DEPLOYMENT_TARGET została ustawiona na 9,3, podczas gdy w moim nowo utworzonym środowisku ustawiono ją na 10,2
Modyfikator domyślnych zależności zignorował moją nową strukturę, ponieważ wymagania platformy docelowej są wyższe niż wymagania aplikacji.
Po dostosowaniu frameworku docelowego wdrażania systemu iOS, aby pasował do mojego celu wdrożenia aplikacji, środowisko zostało pomyślnie skompilowane i połączone.
źródło
Otrzymałem ten sam błąd, ponieważ dodałem kilka frameworków
Cocoapods
. Jeśli używamy kapsuł w naszym projekcie, powinniśmy użyćxcodeworkspace
zamiastxcodeproject
. Aby uruchomić projekt przez xcodebuild, dodałem-workspace <workspacename>
parametr wxcodebuild
poleceniu i działał idealnie.źródło
Okazało się, że
Import Paths
wBuild Settings
mylił dla niestandardowego (MySQL) modułu. Po wskazaniu tego we właściwym kierunku wiadomość zniknęła.źródło
find
jeśli go nie znasz.Naprawiłem to za pomocą
Cele -> Ogólne -> Powiązane frameworki i biblioteki
Dodaj strukturę, która powinna znajdować się na górze w
Workspace
folderze. Coś uciążliwego.źródło
Właśnie usunąłem cocoapod. Następnie zrobiłem instalację pod, aby go usunąć. Następnie dodałem go z powrotem do mojego pliku pod i ponownie go zainstalowałem. Dzięki temu działało. Nie pewny dlaczego.
źródło
Zainstalowałem już strąki. Kompilacja działała bez żadnych problemów po skompilowaniu aplikacji na moim urządzeniu, ale archiwum nie działało. Po prostu biegam:
nie zainstalowano żadnych nowych modułów, po prostu plik .xcodeproj został zregenerowany i archiwum zaczęło działać
źródło
W Xcode 10.1 rozwiązaniem była dla mnie zmiana systemu kompilacji w Ustawieniach obszaru roboczego w menu Plik. Domyślnie jest ustawiony na Nowy system kompilacji , zmieniono go na starszy system kompilacji i to załatwiło sprawę.
źródło
Istnieje kilka potencjalnych błędnych konfiguracji, z których może wynikać problem,
.xcworkspace
ale nie.xcodeproj
plik. Upewnij się także, żeSocial
najpierw zbudowałeś kompilacjęTriviaApp
.TriviaApp
cel wdrażania jest ustawiony na9.0
,Social
cel wdrożenia również musi być ustawiony na9.0
.TriviaApp
) i używany framework (Social
) mają ten sam zestaw konfiguracji. czyli jeśli projekt ma trzy konfiguracje,Debug
,Release
,ReleasePremium
niż ramach Społecznej również trzeba mieć trzy konfiguracjeDebug
,Release
,ReleasePremium
. Upewnij się także, że konfiguracja archiwum jest taka sama dla obuTriviaApp
iSocial
. tzn. jeśli twójTriviaApp
schemat archiwizacji jest ustawiony naReleasePremium
, twójSocial
schemat archiwizacji również musi być ustawiony naReleasePremium
.Social
do każdego.swift
pliku, jeśli jest już dodany do plikuBridging-Header.h
.#use_frameworks!
sięuse_frameworks!
od ciebiePodfile
. Czasami ponowna instalacjaSocial
zasobnika działa, jeśli jest zależna od zasobników.źródło
Jeśli używasz Kartaginy, frameworki w ustawieniach budynków zwykle pozostają
$(PROJECT_DIR)/Carthage/Build/iOS
Jeśli uruchomisz
carthage update --platform ios --no-build
(aby zaoszczędzić czas) pliki w folderze Build nie zostaną ponownie utworzone, moduły nie będą dostępne dla XCode.W moim przypadku uciekłem
carthage update --platform ios
, a następnie mój problem został rozwiązany.źródło
W General => Linked Frameworks and Libraries, dodałem mój
./Pods/Pods.xcodeproj
i to załatwiło sprawęźródło
Dla mnie Kompilacja Tylko architektura aktywna została ustawiona na Tak dla wybranej konfiguracji. To załatwiło sprawę:
Wybierz „Pods” z lewego nawigatora projektu> Wybierz „Ustawienia kompilacji”> Kompiluj aktywną architekturę tylko na Nie
źródło
Jeśli wszystkie powyższe metody nie zadziałały tak jak w moim przypadku. Poprzedniego dnia nie było problemu, ale następnego ranka napotkałem ten sam błąd. Właśnie usunąłem ramy, usuwając odniesienia i ponownie je dodałem. Wiem, że to może zabrzmieć głupio, ale voila zadziałało.
źródło
Miałem podobny problem z ładowaniem FacebookSDK, dodałem ~ / Documents / FacebookSDK (szukaj tam, gdzie są twoje frameworki) do ścieżek wyszukiwania frameworka w Ustawieniach kompilacji, a potem mogłem zaimportować moduł FBSDKShareKit
źródło
Za to, co jest warte (jestem nowy w tym, używając Xcode 7.2 / Swift 2), ale zauważyłem, że samo posiadanie pliku .swift z biblioteki w katalogu projektu automatycznie daje ci do niego dostęp i nie potrzebuje instrukcji using.
Przykład: używam SwiftyJSON i po prostu posiadanie pliku SwiftyJSON.swift w projekcie było wszystkim, czego potrzebowałem.
using
Oświadczenie zostało rzeczywiście daje mi błąd „nie ma takiego modułu” i wyjmując go rozwiązać, i to działa dobrze.źródło