Ionic-framework: ios **BUILD FAILED ** 架构 x86_64 的重复符号

创建于 2017-09-20  ·  19评论  ·  资料来源: ionic-team/ionic-framework

离子版本:(用“x”勾选一个)
[ ] 1.x (对于 Ionic 1.x 问题,请使用 https://github.com/ionic-team/ionic-v1)
[] 2.x
[x] 3.x

我正在提交... (用“x”勾选)
[x] 错误报告
[ ] 功能要求
[ ] 支持请求 => 请不要在此处提交支持请求,请使用以下渠道之一: https ://forum.ionicframework.com/ 或http://ionicworldwide.herokuapp.com/

当前行为:
经过一段未定义的时间后,我的应用程序无法再为 ios 设备构建。

预期行为:
它应该能够为 ios 设备构建。

重现步骤:
我不知道这是怎么发生的

相关代码:
这是我尝试为 ios 构建时得到的

> cordova build ios
✖ Running command - failed!
[ERROR] An error occurred while running cordova build ios (exit code 1):


        (truncated) ... licate symbol _OBJC_IVAR_$_UNIHTTPStringResponse._body in:

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIHTTPStringResponse-6AE7BF574F7FD89D.o

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIHTTPStringResponse-ACD8B349DA1366AA.o
        duplicate symbol _OBJC_CLASS_$_UNIHTTPStringResponse in:

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIHTTPStringResponse-6AE7BF574F7FD89D.o

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIHTTPStringResponse-ACD8B349DA1366AA.o
        duplicate symbol _OBJC_METACLASS_$_UNIHTTPStringResponse in:

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIHTTPStringResponse-6AE7BF574F7FD89D.o

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIHTTPStringResponse-ACD8B349DA1366AA.o
        duplicate symbol _OBJC_IVAR_$_UNIJsonNode._array in:

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIJsonNode-7600CC35AA339D64.o

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIJsonNode-B9FEAECE639D8883.o
        duplicate symbol _OBJC_IVAR_$_UNIJsonNode._object in:

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIJsonNode-7600CC35AA339D64.o

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIJsonNode-B9FEAECE639D8883.o
        duplicate symbol _OBJC_CLASS_$_UNIJsonNode in:

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIJsonNode-7600CC35AA339D64.o

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIJsonNode-B9FEAECE639D8883.o
        duplicate symbol _OBJC_METACLASS_$_UNIJsonNode in:

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIJsonNode-7600CC35AA339D64.o

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/UNIJsonNode-B9FEAECE639D8883.o
        duplicate symbol _OBJC_CLASS_$_CDVLogger in:

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/CDVLogger.o

        /Applications/XAMPP/xamppfiles/htdocs/LVDLV/clone_new/lvdlv/platforms/ios/build/emulator/libCordova.a(CDVLogger.o)
        duplicate symbol _OBJC_METACLASS_$_CDVLogger in:

        /Users/Alexandre/Library/Developer/Xcode/DerivedData/ShOroom-egyzqumtqhesmlcsgwngozvucwss/Build/Intermediates/ShOroom.build/Debug-iphonesimulator/ShOroom.build/Objects-normal/x86_64/CDVLogger.o

        /Applications/XAMPP/xamppfiles/htdocs/LVDLV/clone_new/lvdlv/platforms/ios/build/emulator/libCordova.a(CDVLogger.o)
        ld: 260 duplicate symbols for architecture x86_64
        clang: error: linker command failed with exit code 1 (use -v to see invocation)

        ** BUILD FAILED **


        The following build commands failed:
                Ld build/emulator/ShOroom.app/ShOroom normal x86_64
        (1 failure)
        Error: Error code 65 for command: xcodebuild with args: 
        -xcconfig,/Applications/XAMPP/xamppfiles/htdocs/LVDLV/clone_new/lvdlv/platforms/ios/cordova/build-debug.xcconfig,-workspace,ShOroom.xcworkspace,-scheme,ShOroom,-configuration,Debug,-sdk,iphonesimulator,-destination,platform=iOS 
        Simulator,name=iPhone 
        SE,build,CONFIGURATION_BUILD_DIR=/Applications/XAMPP/xamppfiles/htdocs/LVDLV/clone_new/lvdlv/platforms/ios/build/emulator,SHARED_PRECOMPS_DIR=/Applications/XAMPP/xamppfiles/htdocs/LVDLV/clone_new/lvdlv/platforms/ios/build/sharedpch

其他信息:
这是我第二次发生这种情况,在第一次我不得不从头开始创建一个离子项目并慢慢整合原始项目中的内容并在每次迭代后为 ios 构建以检测问题之后。 几个小时后,代码被完整复制,我不知何故能够为 ios 构建代码。
今天早上尝试为 ios 构建,但我仍然遇到同样的问题[参见相关代码部分]
还尝试删除我的 /plugins 和 /node_modules 目录,但没有帮助。
在网上也找不到任何可以帮助我的东西..

离子信息:(从终端/cmd 提示符运行ionic info并在下面粘贴输出):

cli packages:
    @ionic/cli-utils  : 1.10.2
    ionic (Ionic CLI) : 3.10.3

global packages:
    Cordova CLI : 7.0.1

local packages:
    @ionic/app-scripts : 2.1.4
    Cordova Platforms  : android 6.2.3 ios 4.4.0
    Ionic Framework    : ionic-angular 3.6.1

System:
    ios-deploy : 1.9.1
    ios-sim    : 6.0.0
    Node       : v6.11.0
    npm        : 3.10.10
    OS         : OS X El Capitan
    Xcode      : Xcode 8.2.1 Build version 8C1002
reply

最有用的评论

尝试删除插件控制台并重试,我遇到了同样的问题。 但我有 Cordova ios 4.5

问题是已经在cordova cli 7中的CDVLogger

抄送@kensodemann

所有19条评论

你好! 感谢您向我们提出问题!

我无法复制您的错误,这完全有道理,因为正如您所说,它通常有效,然后神秘地停止。 所以......让我们从一些版本的东西开始:

我使用的是 Xcode 9,你使用的是什么版本?
我正在使用cordova-ios版本4.4.0 ,它看起来与您使用的相同...

嗯...我要尝试几件事

@kensodemann ,我目前在 Xcode 版本 8.2.1

谢谢!

尝试删除插件控制台并重试,我遇到了同样的问题。 但我有 Cordova ios 4.5

问题是已经在cordova cli 7中的CDVLogger

抄送@kensodemann

复制并修复它,虽然我不完全确定这是你的问题,但值得一试。

首先,我删除了我的node_modulesplatform/ios目录并执行了npm iionic build ,最终安装cordova-ios版本4.5.0 ,这导致了您遇到的完全相同的问题。

我的猜测(这只是一个猜测)是您以某种方式拥有cordova-ios 4.5.0 ,即使ionic info正在报告4.4.0 (很奇怪,但我目前没有更好的解释) .

所以我这样做了:

  1. package.json中,将"cordova-ios": "^4.4.0"更改为"cordova-ios": "4.4.0" (没有'^')
  2. config.xml中,将<engine name="ios" spec="^4.4.0" />更改为<engine name="ios" spec="4.4.0" />
  3. rm -rf node_modules/ platforms/ios/
  4. npm i
  5. ionic cordova build ios
  6. * 构建成功 *

所以至少对我来说,修复的关键是将cordova-ios版本固定到4.4.0而不是使用^4.4.0 ,这将升级到次要版本。

当然,这意味着当需要升级cordova-ios时,您将不得不手动执行此操作,但无论如何您可能都想要该控制。

无论如何,试一试,让我知道这是否适合你。

@kensodemann正是问题所在!

@kensodemann万岁,我现在可以建造了,谢谢!!

事情是这样的,在做ioinc build之前,我进入了我的 package.json 文件,这是我发现的"cordova-ios": "^4.4.0",而不是^4.5.0

无论如何,所以我按照你的指示,运行rm -rf node_modules/ platform/ios然后npm inpm build

然后最后一个命令将我的"cordova-ios": "^4.4.0",更改为"cordova-ios": "^4.5.0",
为了尽可能地遵循您的指示,我将其更改为您的建议"cordova-ios": "4.4.0", (对于config.xml也是如此)。

再次卸载我的node_modules & platform/ios并运行npm i然后ionic cordova build ios并且它有效

令人惊讶的是,这样做之后,我仍然发现自己的 $ package.json和 config.xml 中有"cordova-ios": "^4.4.0", #$ 和<engine name="ios" spec="^4.4.0" /> config.xml

令人惊讶的是,这样做之后,我仍然在我的 package.json 和在我的 config.xml

我的猜测是 Cordova 就是这样做的。 个人不喜欢与我的设置混淆的工具...... :(

然后我要关闭它。 很高兴它现在为你工作。

@nuno是正确的,控制台插件是根本原因,它已包含在 cordova 7 中,因此只需删除插件即可解决问题。

@kensodemann
不适合我。 我有

ld build/emulator/MyApp.app/MyApp 正常 x86_64
cd /Applications/IonicApps/BabyName/platforms/ios
导出 IPHONEOS_DEPLOYMENT_TARGET=9.0
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Library/Frameworks/Python.framework /Versions/3.5/bin:/Users/saikrishna/Softwares/android-sdks/platform-tools:/Users/saikrishna/Softwares/android-sdks/tools:/usr/local/bin:/usr/bin:/bin: /usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10。 3.sdk -L/Applications/IonicApps/BabyName/platforms/ios/build/emulator -F/Applications/IonicApps/BabyName/platforms/ios/build/emulator -FMyApp/Plugins/cordova-plugin-facebook4 -FMyApp/Plugins/ cordova-plugin-googleplus -filelist /Users/eupherntechnology/Library/Developer/Xcode/DerivedData/MyApp-gddohggkprehdkdqznpxmbtrwfzt/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/x86_64/MyApp.LinkFileList - Xlinker -rpath -Xlinker @executable_path/Frameworks -mios-simulator-version-min=9.0 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/eupherntechnology/Library/Developer/Xcode/DerivedData/MyApp-gddohggkprehdkdqznpxmbtrwfzt/Build/Intermediates/MyApp. build/Debug-iphonesimulator/MyApp.build/Objects-normal/x86_64/MyApp_lto.o -Xlinker -no_de 重复 -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -ObjC -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker /Users/eupherntechnology/Library/Developer/Xcode/DerivedData/MyApp-gddohggkprehdkdqznpxmbtrwfzt/Build /Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/MyApp.app.xcent /Applications/IonicApps/BabyName/platforms/ios/build/emulator/libCordova.a -weak_framework AudioToolbox -framework StoreKit -framework Bolts -framework FBSDKCoreKit -framework FBSDKLoginKit -framework FBSDKShareKit -framework CoreLocation -framework GoogleAppUtilities -framework GoogleAuthUtilities -framework GoogleNetworkingUtilities -framework GoogleSignIn -framework GoogleSymbolUtilities -framework GoogleUtilities -weak_framework AddressBook -weak_framework CoreText -weak_framework SafariServices -weak_framework Security -weak_framework SystemConfiguration -weak-lz -weak-lz -weak_framework WebKit -weak_framework Social -weak_framework MessageUI -Xlinker -d ependency_info -Xlinker /Users/eupherntechnology/Library/Developer/Xcode/DerivedData/MyApp-gddohggkprehdkdqznpxmbtrwfzt/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/x86_64/MyApp_dependency_info.dat -o /Applications/ IonicApps/BabyName/platforms/ios/build/emulator/MyApp.app/MyApp
重复符号 _OBJC_CLASS_$_CDVLogger 在:
/Users/eupherntechnology/Library/Developer/Xcode/DerivedData/MyApp-gddohggkprehdkdqznpxmbtrwfzt/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/x86_64/CDVLogger.o
/Applications/IonicApps/BabyName/platforms/ios/build/emulator/libCordova.a(CDVLogger.o)
重复符号 _OBJC_METACLASS_$_CDVLogger 在:
/Users/eupherntechnology/Library/Developer/Xcode/DerivedData/MyApp-gddohggkprehdkdqznpxmbtrwfzt/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/x86_64/CDVLogger.o
/Applications/IonicApps/BabyName/platforms/ios/build/emulator/libCordova.a(CDVLogger.o)
ld:架构 x86_64 的 2 个重复符号
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

* 构建失败 *

以下构建命令失败:
ld build/emulator/MyApp.app/MyApp 正常 x86_64
(1 次失败)
错误:命令的错误代码 65:带参数的 xcodebuild:-xcconfig,/Applications/IonicApps/BabyName/platforms/ios/cordova/build-debug.xcconfig,-workspace,MyApp.xcworkspace,-scheme,MyApp,-configuration,Debug ,-sdk,iphonesimulator,-destination,platform=iOS Simulator,name=iPhone SE,build,CONFIGURATION_BUILD_DIR=/Applications/IonicApps/BabyName/platforms/ios/build/emulator,SHARED_PRECOMPS_DIR=/Applications/IonicApps/BabyName/platforms/ios /build/sharedpch

环境

cli 包:(/Applications/IonicApps/BabyName/node_modules)

@ionic/cli-utils  : 1.19.0
ionic (Ionic CLI) : 3.19.0

全局包:

cordova (Cordova CLI) : 7.1.0 
Gulp CLI              : CLI version 3.9.1 Local version 3.9.1

本地包:

Cordova Platforms : ios 4.5.4
Ionic Framework   : ionic1 1.3.3

系统:

ios-deploy : 1.9.1 
ios-sim    : 6.1.2 
Node       : v6.10.3
npm        : 2.15.12 
OS         : macOS Sierra
Xcode      : Xcode 8.3.3 Build version 8E3004b

环境变量:

ANDROID_HOME : /Users/saikrishna/Softwares/android-sdks

杂项:

backend : pro

@surajitdeveloper-

你确定你没有安装控制台插件吗?
您是否删除了所有内容并从头开始重新安装?

如果您的 repo 在线,请提供链接,我可以快速查看。 不过,总的来说,这不是 Ionic Framework 问题,而是使用不兼容插件的问题。

@kensodemann是对的,这完全是由于插件太旧或不兼容。

对我来说,它原来是cordova-plugin-inappbrowser 。 在我的 config.xml 中,仍然有一个对不再存在的 git repo 的引用。 我最初在构建过程中没有注意到,但突然之间,我注意到构建抱怨没有找到插件的 repo。 解决方案很简单:将 config.xml 中的行放在注释中,然后重新安装插件。 iOS 又开始构建了 :)

因此,如果它可能有帮助,请在运行ionic cordova build ios后检查您的构建日志 - 它可能包含有关插件的错误。 并检查所有插件:简单地重新安装它们可能无济于事,您可能还需要更新版本。

@nuno的解决方案对我有用,只需运行:
cordova plugin rm cordova-plugin-console
cordova platform rm ios
cordova platform add ios
cordova build ios
我正在使用cordova-ios 4.5.4 版。

大家好,

我遇到了同样的问题,我尝试执行@didinj发布的解决方案但无法正常工作,因为在此之后我在执行 rm 平台然后构建 ios 时遇到脚本错误,我再次添加 app-scripts 但问题是这样的:npm install @ionic / app-scripts@latest --save-dev 因为安装 3.1.7 版本的脚本,这会产生相同的主要错误,然后我执行并再次应用程序脚本,但应用程序脚本的版本较少,现在可以正常使用3.0.0 : npm install @ionic / [email protected] --save-dev

我也在使用 cordova-ios 版本 4.5.4 和所有最新版本的 macOS High Sierra 10.13.2 和 Xcode 9.2

cli 包:(/usr/local/lib/node_modules)

@ionic/cli-utils  : 1.19.0
ionic (Ionic CLI) : 3.19.0

全局包:

cordova (Cordova CLI) : 8.0.0

本地包:

@ionic/app-scripts : 3.0.0
Cordova Platforms  : android 6.2.3 ios 4.5.4
Ionic Framework    : ionic-angular 3.9.2

系统:

ios-deploy : 1.9.2
Node       : v8.0.0
npm        : 5.0.0
OS         : macOS High Sierra
Xcode      : Xcode 9.2 Build version 9C40b

我希望通过这个我可以帮助其他用户。

谢谢大家。

为我工作! 谢谢@kensodemann ! 😃

根据https://github.com/apache/cordova-plugin-console

由于此插件提供的功能现已包含在 cordova-ios 4.5.0 或更高版本中,因此不再使用此插件,并且支持已内置于 cordova-windows > 5.0.0。 您应该从您的应用程序中删除此插件。

有人还有这个问题吗? 从一个新的应用程序我无法使用这个插件......

@nuno的解决方案也适用于我。

ionic cordova plugin remove cordova-plugin-console

  • 点击上面的命令以获得 ios 构建成功。

谢谢你的问题! 此问题已被锁定,以防止与原始问题无关的评论。 如果这仍然是最新版本的 Ionic 的问题,请创建一个新问题并确保完整填写模板。

此页面是否有帮助?
0 / 5 - 0 等级