2013-08-05 12 views
14

Próbuję skonfigurować instancję CI Jenkins dla naszego projektu rozwoju aplikacji. Mam działające zadania, które uruchamiają logikę i testy aplikacji przy użyciu konfiguracji Debug, ale staram się zbudować IPA, ponieważ otrzymuję błąd połączenia podczas kompilacji.Błąd połączenia podczas próby zbudowania aplikacji za pomocą Cocoapods przy użyciu xcodebuild na Jenkins

ld: library not found for -lPods 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Aplikacja używa Cocoapods i buduję z wtyczką Jenkins XCode.

Szukałem podobnych problemów i starał/zweryfikowana kilka rzeczy:

  • Używam pracy.
  • Używam pod install przed krokiem xcodebuild.
  • Sprawdziłem że architektur temat samego projektu, cel i strąki są takie same - standardowe (ARMv7, armv7s) - jak sugeruje this answer
  • Próbowałem różnych rozwiązań z this GitHub thread
  • Próbowałem różnych ustawienia Odczytane dane miejscach jak za this answer równiez
  • Podfile określa platform :ios, :deployment_target => "6.0"

W tym momencie nie mam pojęcia, czego jeszcze spróbować.

+0

Czy jesteś pewien, że kompilujesz obszar roboczy, a nie projekt? Jeśli jeszcze nie jesteś, spróbuj użyć wtyczki Jenkins Xcode i określ "Plik Workspace Xcode". Wtyczka Xcode może również pomóc w usunięciu wszelkich innych możliwych błędów. Miałem ten sam problem w zeszłym tygodniu, spędziłem wiele godzin tylko po to, aby zdać sobie sprawę, że mam Jenkinsa kompilującego projekt Xcode, a nie obszar roboczy Xcode. Przejdź także bezpośrednio do projektu, który tworzy Jenkins, otwórz go w Xcode i sprawdź, czy możesz go sam skompilować - ułatwi to również debugowanie go przez Xcode. – YoCoh

+0

Tak, zdecydowanie przy użyciu obszaru roboczego, a nie projektu. Jak już mówiłem, mam bardzo podobną konfigurację do uruchamiania logiki i testów aplikacji. –

+0

Widzę, wiem, to denerwujące ... na wypadek, gdybyś tego nie spróbował, może ta strona (# 4 w FAQ) może pomóc - https://github.com/CocoaPods/CocoaPods/wiki/Creating -a-project-that-uses-CocoaPods – YoCoh

Odpowiedz

-2

Jeśli używasz XCode 5 to myślę this powinno pomóc

zasadzie zaktualizować Gemfile (lub je utworzyć, jeśli nie istnieje) i dodać:

gem 'cocoapods', :git => 'http://github.com/CocoaPods/CocoaPods', :branch => 'xcode-5-support' 
gem 'xcodeproj', :git => 'http://github.com/CocoaPods/Xcodeproj', :branch => 'redacted-support' 

Także jeśli masz takie rzeczy jak config.build_settings['ARCHS'] = 'armv7' w twoim Podfile, nie zapomnij się go pozbyć, będziesz też musiał mieć armv7s.

Mam nadzieję, że to pomoże, bo uratowało mnie kilka dni koszmaru.

2

Problem może wynikać z różnych (niestandardowych) konfiguracji kompilacji.

Spójrz na to:

https://github.com/CocoaPods/CocoaPods/issues/121

spróbuj dodać następujące ścieżki przeszukiwania do "Biblioteka wyszukiwania Ścieżki" (dla wszystkich configs)

$(SYMROOT)/Release$(EFFECTIVE_PLATFORM_NAME) 
0

można spróbować wybrać swój projekt strąków i set Build Settings-> Build Active Architecture Only-> NO dla Release i Debug, powtórz tę akcję dla każdego celu w Pods.

3

Może to również spowodować ustawienie "Utwórz katalog wyjściowy".

Zmiana wartości "Build Output Directory" ze ścieżki względnej na pełną ścieżkę, która została dla mnie ustalona.

E.g.zamiast "MyOutputDirectory" użyj "/ Users/Shared/Jenkins/home/jobs/JenkinsProject/workspace/MyOutputDirectory"

0

Nie mogę mówić do wtyczki XCode, więc moja odpowiedź może zostać uznana za nieco niereagującą, ale tutaj jest jak to działa.

dodałem etapu budowy, który wygląda tak:

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer/ 
echo $WORKSPACE 
cd "/Users/[jenkins-accountname]/.jenkins/jobs/[jobname]/workspace/[xcode project name]" 
pod install 
xcrun xcodebuild -workspace [your workspace (not project) name] -scheme [the build scheme to build] clean build -destination "platform=iOS,name=CurtsiPhone" -destination-timeout 120 

-destination i -destination-timeout były kluczowymi argumentami budowania sukcesu. Mój projekt będzie budowany tylko na telefonie, ponieważ używa specjalistycznych bibliotek, więc mój telefon musi być podłączony, aby XCode mógł go znaleźć. Możesz tego nie potrzebować, jeśli Twój projekt będzie budowany w symulatorze, ale działałem tylko wtedy, gdy jednoznacznie określiłem miejsce docelowe.

Jeśli wtyczka XCode pozwala na określenie dodatkowych argumentów kompilacji, powinieneś spróbować.

Powiązane problemy