2016-11-07 19 views
12

Aktualizuję swój projekt do Swift 3. Podczas aktualizacji niektórych kokosapod do wersji 3, pojawia się następujący komunikat w terminalu, po uruchomieniu podinstalacji:Następujące strąki są zintegrowane z obiektami docelowymi, które nie mają tej samej wersji Swift.

Analyzing dependencies 
[!] The following pods are integrated into targets that do not have the same Swift version: 

- AWSCore required by myApp (Swift 3.0.1), myApptests (Swift 3.0) 
- AWSS3 required by myApp (Swift 3.0.1), myApptests (Swift 3.0) 
- Alamofire required by myApp (Swift 3.0.1), myApptests (Swift 3.0) 

jest to długi wątek tutaj: https://github.com/CocoaPods/CocoaPods/issues/5864 o problemie, a ja starałem się proponowane rozwiązanie, ale gdy uruchamiam pod zainstalować, i wciąż ten sam komunikat.

Oto mój plik pod:

enter image description here

poza jednym danego łącza nie znalazłem wiele w tej kwestii. Ktoś jeszcze doświadczył tego samego problemu? Jakieś rozwiązania? Właśnie zainstalowałem Xcode 8.1 i Swift 3.0.1 w zeszły weekend.

Odpowiedz

3

Mam rozwiązać ten problem tak:

  1. miałem dwa cele: głównym projektu i cele testów.
  2. Głównym celem mojego projektu było "Użyj starszej wersji języka Swift" (w Ustawieniach kompilacji) do "Nieokreślono (3.0)".
  3. Ustawiam opcję "Użyj starszej wersji języka Swift" na "Nie" i wszystko działało bez zarzutu.
+0

Gdzie jest ta opcja? Nie widzę tego w ustawieniach kompilacji (xcode 8.3.3) – Adam

1

Na CocoaPods App V.1.1.1 problem ten został rozwiązany poprzez ustawienie Use legacy Swift Language Version do Unspecified w Build Settings sekcji dla wszystkich celów.

Prawdopodobnie jest to błąd aplikacji - wszystkie cele miały takie same ustawienia, ale aplikacja CocoaPods narzekała tylko na jedną z nich.

UPD: aby móc skompilować projekt musiałem zmienić go z powrotem z Unspecified do No

1

miałem problemu z jednej tarczy z różnicą od 3,0 do 3.0.1

Rozwiązałem poprzez ręczną edycję pliku projektu (project.pbxproj) i zmianę 3.0; z 3.0.1;

11

Znam ten post jest stary, ale ja po prostu rozwiązać ostatnim numerze kiedy aktualizowany mój projekt swift3 do swift4 jedną z Xcode9 problem powiedział: [!] The following pods are integrated into targets that do not have the same Swift version:

Appsee required by MyApp (Swift 4.0), MyAppUnitTest (Swift 3.0) ... Allpods

My rozwiązaniem było: z moim główny cel MyApp z szybkiej wersji 4,0, ja też zaktualizowane moją wersję unittest 4,0 do Build Settings ->Swift Language Version

+1

Wielkie dzięki ... rozwiązałem mój problem! :) –

2

ten problem gorzej z Xcode 9 ponieważ obsługuje zarówno 3,2 i 4,0 szybkich wersje, ale kakao strączki nie obsługuje tego jeszcze:

[!] The following pods are integrated into targets that do not have the same Swift version: 
- XCGLogger required by target1 (Swift 4.0), target2 (Swift 3.0) 

Obejście: przełącznik cel 1 do szybkiej 3.2 tymczasowo zainstalować strąki kakao, a następnie włączyć go z powrotem do Swift 4.0.

+0

czy masz źródło dla CocoaPods, które jeszcze tego nie wspiera? czy to jest założenie oparte na opisie błędu? –

+0

@GeorgeMarmaridis Nie jestem pewien, czy dobrze rozumiem twoje pytanie, ale w tym konkretnym projekcie mam cele z różnymi wersjami Swift i wygląda na to, że kapsuły Cocoa nie mogą sobie z nimi poradzić, mimo że Xcode –

0

Kiedy otworzyłem xcodeproj plik jest wyświetlany 3.2, ale kiedy wpadłem git diff, zauważyłem, że project.pbxproj miał wszystko jak Swift 3.0.

Ręczne aktualizowanie zmiennych SWIFT_VERSION do 3.2 za pomocą edytora tekstowego rozwiązało rozbieżność.

Polecam to tylko w ostateczności!