6

我是PhoneGapiOS 和 Xcode 的新手。我的应用程序在 Android 手机上运行良好时遇到问题。我能够在 iOS 模拟器中构建和运行该应用程序,但是当我将其存档以在设备上进行测试时,我收到以下错误。我已经搜遍了,找不到有用的东西。

错误:

ld: warning: ignoring file /Users/danlehman/Library/Developer/Xcode/DerivedData/HelloWorld-ebkivbdaivqchkgycifnnpgixspn/Build/Intermediates/ArchiveIntermediates/HelloWorld/BuildProductsPath/Release-iphoneos/libCordova.a, file was built for archive which is not the architecture being linked (armv7s): /Users/danlehman/Library/Developer/Xcode/DerivedData/HelloWorld-ebkivbdaivqchkgycifnnpgixspn/Build/Intermediates/ArchiveIntermediates/HelloWorld/BuildProductsPath/Release-iphoneos/libCordova.a
Undefined symbols for architecture armv7s:
  "_OBJC_METACLASS_$_CDVViewController", referenced from:
      _OBJC_METACLASS_$_MainViewController in MainViewController.o
  "_OBJC_CLASS_$_CDVViewController", referenced from:
      _OBJC_CLASS_$_MainViewController in MainViewController.o
  "_OBJC_CLASS_$_CDVURLProtocol", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
4

3 回答 3

12

我在 iPhone 4S 上构建的Cordova 2.7、 Xcode 5 和 iOS7遇到了类似的错误。我更改了一个设置,它构建正确。

选择您的应用。转到Build Settings然后Valid Architectures。改成:

armv7

我之前的设置是:

arm64 armv7 armv7s

清洁和建造。它似乎与armv7s有关。让它运行的一个副作用是状态栏是透明的并且浮动在应用程序的顶部。这是另一个话题,并且与 iOS7 相关。

于 2013-10-16T14:51:17.387 回答
1

我为此苦苦挣扎,并阅读了无数似乎对某些人有用但对我无效的“解决方案”。考虑到这一点,这可能对您不起作用。:)

1)克隆cordova-ios repo

git clone git@github.com:apache/cordova-ios.git

2)查看可用的分支

git 分支 -a

您可能会看到如下内容:

  • master remotes/origin/0.9.5.1 remotes/origin/0.9.6.x remotes/origin/1.6.1 remotes/origin/1091 remotes/origin/2.6.x remotes/origin/2.7.x remotes/origin/2.8.x remotes/origin/2.9.x remotes/origin/3.0.0 remotes/origin/464 remotes/origin/CB-3530 remotes/origin/HEAD -> origin/master remotes/origin/better_resource_copy_step remotes/origin/custom_schemes remotes/origin/设备遥控器/原点/主遥控器/原点/multipart_plugin_result 遥控器/原点/下一个遥控器/原点/phonegap-js

3) 我使用 Cordova 2.9 构建了我的应用程序,因此请查看 2.9.x 分支——根据您的项目进行调整

git checkout -b 2.9.x origin/2.9.x

4) 验证您是否在所需的分支上

git 分支

您应该会看到如下内容:

  • 2.9.x 主控

5)进入垃圾箱/

光盘箱/

6)现在重新创建科尔多瓦应用程序:

./create ~/some/project/dir/project com.project 项目

7) 将您的 www 文件夹从失败的构建复制到新项目。

8) 从 Xcode 获取成功构建消息。

9)给Xcode手指。

希望这可以帮助!

于 2013-07-03T18:08:39.743 回答
1

This is an error in Phonegap. You need to go to build settings in the project, search for "Other Linker Flags", then change:

Change "$(TARGET_BUILD_DIR)/libCordova.a"

to

"$(BUILT_PRODUCTS_DIR)/libCordova.a"

于 2013-07-10T03:01:41.373 回答