2013-06-27 15 views
24

To wydaje się być powtarzającym się zjawiskiem.Tworzenie archiwum dla wydania XCode 4.6 z phonegapem v 2.9 nie powiodło się

Widziałem wiele wcześniejszych pytań, gdzie rozwiązaniem było usunięcie armv6, , a następnie archiwum działałoby. Oczywiście, armv6 zniknął.

A więc teraz buduj z obu prądami, Xcode 4.6.3 phonegap 2.9. I tak, aplikacja działa dobrze na iphones, ipadów i na symulatorze.

otrzymuję tę wiadomość na koniec stworzyć archiwum kroku:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -L/Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/BuildProductsPath/Release-iphoneos -F/Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/BuildProductsPath/Release-iphoneos -filelist /Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/IntermediateBuildFilesPath/peeq.build/Release-iphoneos/peeq.build/Objects-normal/armv7s/peeq.LinkFileList -dead_strip -weak_framework CoreFoundation -weak_framework UIKit -weak_framework AVFoundation -weak_framework CoreMedia -weak-lSystem -force_load /Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/InstallationBuildProductsLocation/Applications/libCordova.a -ObjC -fobjc-link-runtime -miphoneos-version-min=5.0 -framework CoreLocation -framework ImageIO -framework OpenAL -framework AssetsLibrary /Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/BuildProductsPath/Release-iphoneos/libCordova.a -framework Foundation -weak_framework UIKit -framework CoreGraphics -framework AddressBook -framework AddressBookUI -framework AudioToolbox -weak_framework AVFoundation -framework CFNetwork -framework MediaPlayer -framework QuartzCore -framework SystemConfiguration -framework MobileCoreServices -weak_framework CoreMedia -framework CoreLocation -o /Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/IntermediateBuildFilesPath/peeq.build/Release-iphoneos/peeq.build/Objects-normal/armv7s/peeq 

ld: file not found: /Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/InstallationBuildProductsLocation/Applications/libCordova.a 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

i podeszła i rozejrzał się po systemie plików tam:

cd /Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build 
./Intermediates/ArchiveIntermediates/peeq/BuildProductsPath/Release-iphoneos/libCordova.a 
./Intermediates/ArchiveIntermediates/peeq/IntermediateBuildFilesPath/CordovaLib.build/Release-iphoneos/CordovaLib.build/Objects-normal/armv7/libCordova.a 
./Intermediates/ArchiveIntermediates/peeq/IntermediateBuildFilesPath/CordovaLib.build/Release-iphoneos/CordovaLib.build/Objects-normal/armv7s/libCordova.a 
./Intermediates/ArchiveIntermediates/peeq/IntermediateBuildFilesPath/UninstalledProducts/libCordova.a 

A jego zostały zbudowane, po prostu nie umieścić gdzie linker chciał go znaleźć.

Bez wątpienia niektóre ustawienia kompilacji informują o tym linkera, lub mówi kompilacji, aby umieścić ją tam, gdzie linker chce ją znaleźć.

Chyba że jest coś innego.

Moje pytanie brzmi: jak poprawnie uzyskać archiwum aplikacji, aby zbudować , aby mogło zostać wysłane do sklepu.

Dzięki John


Drobny człowiek, który pracuje w Apple powiedział mi, gdzie szukać, na którym punkt ten został rozwiązany.

głębi ustawienia kompilacji, istnieje pole do ustawienia, zwany inne flagi Linker

Zaczyna się pokazując żadnej wartości, ale jeśli klikniesz na nim, to wyskakuje z Debug i Release.

W bardzo długim ciągu, który jest Release, znajduje się -force_load libCordova.a
i usuwa tę część ciągu.

Od:

-weak_framework CoreFoundation -weak_framework UIKit -weak_framework AVFoundation -weak_framework CoreMedia -weak-lSystem -force_load ${TARGET_BUILD_DIR}/libCordova.a -ObjC 

Do:

-weak_framework CoreFoundation -weak_framework UIKit -weak_framework AVFoundation -weak_framework CoreMedia -weak-lSystem -ObjC 

Jego prawdopodobnie błąd w jakiś sposób, że PhoneGap domyślne to w miejscu, będę również z nimi skontaktować i sprawdzić, czy to może domyślnie Naprawa .

Jego uwaga, że ​​zwrócił mi na to:

Zauważyłem, że komenda ogniwo zawiera zarówno to:

-force_load /Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/InstallationBuildProductsLocation/Applications/libCordova.a 

a to:

/Users/peeq/Library/Developer/Xcode/DerivedData/peeq-gylybvwifdxjmtajtbvdsdpjcvkl/Build/Intermediates/ArchiveIntermediates/peeq/BuildProductsPath/Release-iphoneos/libCordova.a 

Ścieżka były przekazywane do -force_load jest fałszywą ścieżką, na którą narzeka linker. Myślę, że musisz usunąć flagę linkera "-force_load". Czy ustawiłeś taką flagę w ustawieniu "Inne flagi linkerów"?

+0

Miałem ten sam problem i rozwiązałem go, przynajmniej dla mojego projektu. Sprawdź moją odpowiedź tutaj: http://stackoverflow.com/a/17455264/2183674 –

+0

FYI mamy to samo z XCode 5.1.1 i PhoneGap 3.1. Poprawka na dole z moim komentarzem jest tym, co zadziałało dla nas. – ganders

Odpowiedz

79

Znaleziono poprawkę.

  1. W swoim Ustawienia kompilacji celu, znaleźć Other Linker Flags
  2. Zmień $(TARGET_BUILD_DIR)/libCordova.a
  3. Aby $(BUILT_PRODUCTS_DIR)/libCordova.a
+4

Szybkie i łatwe. Dzięki. – pasine

+0

Dzięki, rozwiązałeś problem! (Trzymane w starych opisach libCordova.a problemach ...) – Koniak

+4

DZIĘKUJEMY !!! dlaczego cordova zawsze ma te problemy. Każde wydanie kodu Xcode i każdy phonegap wydaje właśnie bóle głowy !! DZIĘKUJĘ CI!! – Francesco

4

To nie działa na mnie, aby zmienić na "$ (BUILT_PRODUCTS_DIR) /libCordova.a" w "Inne flagi Linker". Problem nadal istnieje. (Xcode 4.6.3 phonegap 2.9.0)

Tak więc, próbuję ustawienia poniżej i to działa dla mnie.

  1. W swoim Ustawienia kompilacji celu, znaleźć "inne flagi łącznik"
  2. Delete "$ (TARGET_BUILD_DIR) /libCordova.a"
  3. Change "-force_load" na "-all_load"

To mi się udało.

======== Aktualizacja ============

Z powyższej sztuczki, mogę osiągnąć aplikację i przesłać do App Store bez problemu. Ale dowiedziałem się w iTune Connect, że pokazuje "Nieprawidłowy plik binarny".

+0

+1 pracował dla mnie! –

+0

Dzięki, to zadziałało dla mnie :) –

+0

Awesome !!!!!!!!! – ganders