簡體   English   中英

使用 phonegap v 2.9 為 Xcode 4.6 版本構建存檔失敗

[英]Building an archive for Xcode 4.6 release with phonegap v 2.9 fails

這似乎是一個反復出現的現象。

我看到了一些先前的問題,解決方案是刪除 armv6,然后存檔就可以工作了。 當然,armv6 沒了。

所以,現在,使用當前的Xcode 4.6.3 phonegap 2.9 構建。 是的,該應用程序在 iphone、ipad 和模擬器上運行良好。

我在創建存檔步驟結束時收到此消息:

    /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

它已經構建好了,只是沒有放在鏈接器想要找到的地方。

因此,毫無疑問,某些構建設置要么告訴鏈接器在那里查找,要么告訴構建將它放在鏈接器想要找到的位置。

除非是別的東西。

我的問題是如何正確構建應用程序存檔,以便它可以發送到商店。


一個在 Apple 工作的好人告訴我在哪里看,到那時,這個問題就解決了。

在 Build Settings 的深處,有一個字段需要設置,稱為 Other Linker Flags

它開始時沒有顯示任何值,但是如果您單擊它,它會彈出 Debug 和 Release。

在很長的 Release 字符串中,找到一個 -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 將其默認設置到位,我也會聯系他們,看看它是否可以默認修復它。

他指出我的筆記:

我注意到您的鏈接命令包含以下內容:

-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”鏈接器標志。 您是否在“其他鏈接器標志”設置中設置了這樣的標志?

找到了解決辦法。

  1. 在目標的構建設置中,找到Other Linker Flags
  2. 更改$(TARGET_BUILD_DIR)/libCordova.a
  3. $(BUILT_PRODUCTS_DIR)/libCordova.a

在“其他鏈接器標志”中更改為“$(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 中發現它顯示“無效的二進制文件”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM