ios - 使用 phonegap v 2.9 为 Xcode 4.6 版本构建存档失败

标签 ios xcode architecture cordova phonegap-build

这似乎是一个反复出现的现象。

之前看到很多问题,解决方法是删除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

它已经被构建,只是没有放在链接器想要找到它的地方。

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

除非是别的。

我的问题是如何获取要构建的应用存档 正确,所以它可以去商店。


一位在 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”链接器标志。您是否在“Other Linker Flags”设置中设置了这样的标志?

最佳答案

找到了修复。

  1. 在您的 Target 的build设置中,找到 Other Linker Flags
  2. 更改 $(TARGET_BUILD_DIR)/libCordova.a
  3. $(BUILT_PRODUCTS_DIR)/libCordova.a

关于ios - 使用 phonegap v 2.9 为 Xcode 4.6 版本构建存档失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17351446/

相关文章:

objective-c - 我可以最小化此 SBjson 代码中使用的对象数量吗?

objective-c - Objective-C : How to resolve Leak in Code (results from Instrument)

swift - 无法将项目构建到物理设备 Xcode

ios - 按具有相同键的字段对 NSDictionary 进行排序

ios - 我们如何从 iMessage 访问消息?

architecture - 如何将操作与安全检查分离?

web-services - Web开发中前端、后端和中间件的区别

android - 支持和反对 Android SQLite 使用的论点

swift - 如何删除与不存在的变量相关的控制台错误

ios - AudioKit Playground (错误 : 'Module compiled with Swift 3.1 cannot be imported in Swift 3.0.2' )