2013-06-27 36 views
24

这似乎是一个反复出现的现象。使用phonegap v 2.9创建XCode 4.6版本的存档失败

我看到了一些先前的问题,其中解决方案是删除armv6, ,然后存档将工作。当然,armv6已经不在了。

所以,现在,建设两个电流,Xcode 4.6.3 phonegap 2.9。 是的,该应用程序在iphones,ipads和模拟器上工作正常。

我得到这个消息在创建归档步骤结束:

/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) 

又走了过来,看了看周围的文件系统有:

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 

而且它的建成,只是没有把链接器想要找到它。

所以,毫无疑问,一些构建设置要么告诉链接器看看那里,要么 告诉构建把它放在链接器想要找到它的地方。

除非它的其他东西。

我的问题是如何让应用程序存档正确地构建 ,因此它可以去商店。

感谢, 约翰


罚款的人谁在苹果公司工作的告诉我在哪里看,在这一点上,这解决了。

生成设置内深处,有是要设置一个领域,叫做其它链接器标记

一开始会显示没有价值,但如果你点击它,它与调试和发布弹出。

在非常长的发布版字符串中,找到-force_load libCordova.a
并删除该部分字符串。

来源:

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

要:

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

它可能以某种方式说PhoneGap的默认这地方,我将 也与他们联系,看它是否能默认的修复一个bug 。

他的注意,我指出它:

我注意到,你的链接命令同时包含这一点:

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

这:

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

传递的路径-force_load是链接器抱怨的虚假路径。我认为你需要删除“-force_load”链接器标志。你在“其他链接器标志”设置中设置了这样一个标志吗?

+0

我遇到了同样的问题并解决了它,至少对于我的项目而言。看看我的答案在这里:http://stackoverflow.com/a/17455264/2183674 –

+0

仅供参考,我们得到了与XCode 5.1.1和PhoneGap 3.1同样的事情。底部的修复与我的评论是为我们工作的。 – ganders

回答

79

找到修复程序。

  1. 在您的目标构建设置,找到Other Linker Flags
  2. 变化$(TARGET_BUILD_DIR)/libCordova.a
  3. $(BUILT_PRODUCTS_DIR)/libCordova.a
+4

快速简单。谢谢。 – pasine

+0

谢谢,解决了这个问题! (保持运行到libCordova.a问题的旧描述...) – Koniak

+4

谢谢!为什么科尔多瓦总是有这些问题..每一个xcode发布和evey phonegap发布只是头疼!谢谢!! – Francesco

4

这不作品在为我改变为 “$(BUILT_PRODUCTS_DIR)/libCordova.a” “其他链接器标志”。问题依然存在。 (Xcode 4.6.3 Phonegap 2.9.0)

所以,我尝试下面的设置,它适用于我。

  1. 在您的目标构建设置,找到 “其他链接器标记”
  2. 删除 “$(TARGET_BUILD_DIR)/libCordova.a”
  3. 更改 “-force_load” 到 “-all_load”

这对我来说是诀窍。

========更新============

使用上述伎俩,我可以实现应用程序,并提交到App Store中没有问题。 但我在iTune Connect中发现它显示“Invalid binary”。

+0

+1为我工作! –

+0

谢谢,这为我工作:) –

+0

真棒!!!!!!!!! – ganders