来自iTC的无效Bundle错误,无法提交应用程序 - 因为4个swift dylib无法嵌入

xap*_*hod 9 xcode cocoa-touch ios swift watchkit

我的应用程序在设备和模拟器上运行良好,但是当我提交它时,我得到了无效的捆绑包 - 您的应用程序引用的一个或多个动态库不存在于dylib搜索路径错误中,大约在半小时后通过电子邮件发送给我上传成功完成.

按照这里的建议,即运行otool -L,我可以看到应用程序的主可执行文件按预期@rpath/...dylibFrameworks/文件夹中包含所有文件,但是,appex的可执行文件缺少一些Swift库.

这是otool -Lappex上的输出:

Watch Extension:
    /System/Library/Frameworks/WatchKit.framework/WatchKit (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1349.0.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
    /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 1348.0.0)
    /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 3599.4.0)
    /System/Library/Frameworks/WatchConnectivity.framework/WatchConnectivity (compatibility version 1.0.0, current version 116.0.0)
    @rpath/libswiftCore.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftCoreLocation.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftDarwin.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftDispatch.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftFoundation.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftHomeKit.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftSceneKit.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftUIKit.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftWatchKit.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftsimd.dylib (compatibility version 1.0.0, current version 800.0.46)
Run Code Online (Sandbox Code Playgroud)

以下不在Frameworks/文件夹中(但所有其他文件夹都是):

    @rpath/libswiftHomeKit.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftSceneKit.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftWatchKit.dylib (compatibility version 1.0.0, current version 800.0.46)
    @rpath/libswiftsimd.dylib (compatibility version 1.0.0, current version 800.0.46)
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我通过重新生成我的pods项目pod install,没有改变任何东西.我没有看到任何警告.我检查了build(archive)的日志输出,也没有警告.我怎样才能将它们包括在内?

在我的主应用程序目标中,Always Embed Swift标准库设置为yes.在Watch and Watch Appex目标中,将其设置为no以避免拒绝重复(好).我尝试EMBEDDED_CONTENT_CONTAINS_SWIFT在我的appex中设置为yes,如其他线程所述,但这没有任何区别.

更新1 - 我也无法从xcode组织器导出为ADHOC构建,它在"编译bitcode"步骤中出于同样的原因失败.运行时搜索路径设置如下:

构建设置中的运行时搜索路径

这是导出失败的日志片段,任何想法如何解决这些问题?我看不出为什么缺少这些库.

    Debug: Command took 0 seconds
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks/WatchKit.framework/WatchKit.tbd
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks/Foundation.framework/Foundation.tbd
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/usr/lib/libobjc.A.tbd
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/usr/lib/libSystem.B.tbd
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation.tbd
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks/UIKit.framework/UIKit.tbd
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks/WatchConnectivity.framework/WatchConnectivity.tbd
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/usr/lib/libobjc.A.tbd
    Debug: Search Path: ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/lib/darwin', '/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/usr/lib', '/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks']
    error: libswiftCore.dylib not found in dylib search path


Stderr:
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1974:in `block in CompileOrStripBitcodeInBundle'
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1931:in `each'
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1931:in `CompileOrStripBitcodeInBundle'
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1921:in `block in CompileOrStripBitcodeInBundle'
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1920:in `each'
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1920:in `CompileOrStripBitcodeInBundle'
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:2106:in `ProcessIPA'
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:2674:in `<main>'
2016-09-14 15:33:40 +0000  /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool exited with 1
2016-09-14 15:33:40 +0000  ipatool JSON: {
    alerts =     (
            {
        code = 2554;
        description = "Configuration issue: platform AppleTVSimulator.platform doesn't have any non-simulator SDKs; ignoring it";
        info =             {
        };
        level = WARN;
    },
            {
        code = 2554;
        description = "Configuration issue: platform iPhoneSimulator.platform doesn't have any non-simulator SDKs; ignoring it";
        info =             {
        };
        level = WARN;
    },
            {
        code = 2554;
        description = "Configuration issue: platform WatchSimulator.platform doesn't have any non-simulator SDKs; ignoring it";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftCore.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftCore.dylib";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftCoreGraphics.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftCoreGraphics.dylib";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftCoreLocation.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftCoreLocation.dylib";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftDarwin.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftDarwin.dylib";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftDispatch.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftDispatch.dylib";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftFoundation.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftFoundation.dylib";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftHomeKit.dylib: Could not resolve @rpath in @rpath/libswiftHomeKit.dylib from Watch Extension";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftObjectiveC.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftObjectiveC.dylib";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftSceneKit.dylib: Could not resolve @rpath in @rpath/libswiftSceneKit.dylib from Watch Extension";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftUIKit.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftUIKit.dylib";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftWatchKit.dylib: Could not resolve @rpath in @rpath/libswiftWatchKit.dylib from Watch Extension";
        info =             {
        };
        level = WARN;
    },
            {
        code = 284;
        description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftsimd.dylib: Could not resolve @rpath in @rpath/libswiftsimd.dylib from Watch Extension";
        info =             {
        };
        level = WARN;
    },
Run Code Online (Sandbox Code Playgroud)

xap*_*hod 17

花了12个小时来解决这个问题,但这就是修复它的原因 - 更改 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES构建设置如下:

应用目标(主要目标) - 设置为NO(我的是YES)

观察目标 - 设置为YES(我的是没有)

观看应用扩展目标 - 设置为NO(我的是的)

编辑:我通过在xcode 8中创建一个新的空的监视项目来解决这个问题,并交叉引用新的xcode 8模板项目中的构建设置与我脆弱的古老项目之间的差异.上面的设置是xcode 8模板项目的设置.


kev*_*kev 5

我想详细介绍一下我在此问题上的经验,以期希望其他人遇到这个问题时可以节省一些时间。

背景:

  1. 较旧的项目起源于iOS 8,WatchOS 1.0 App和Today Extension
  2. 将应用程序从Swift 1.0更新到Swift 3.0.1,将目标iOS从8更新到10,watchOS从1.0更新到3.0
  3. 开始使用Cocoa Pods进行此刷新,最初不是

@xaphod缺少库,当我运行时otool -L,每个目标中的所有库看起来都是正确的。

经过许多拒绝的二进制文件之后,我终于:

  1. 如此处建议,从项目中卸载了Cocoapods
  2. 已将Cocoapods更新到最新的非beta版本
  3. 重新安装了Cocoapods,将Pod目标从应用程序,监视应用程序,监视扩展,今天的扩展以及测试目标减少到该应用程序(因为主应用程序仅是使用Pod的东西)
  4. 遵循此处发布的@xaphod建议,以创建一个新的模板项目(不使用Pod)并比较了构建设置,特别是 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
  5. ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES

主要应用目标 = $(inherited)每个可可豆荚警告建议。默认为YES,实际上显示为YES - $(inherited)Xcode。最后,EMBEDDED_CONTENT_CONTAINS_SWIFT = YES按每个广告连播设置为您提供哪些广告连播

观看应用 =YES

手表扩展名 =NO

今天扩展 =NO

在进行上述设置之前,我尝试$(inherited)了所有使可可豆荚开心的事情。这显然是一个糟糕的生活决定。

我终于发现尝试导出,因为AD HOC如果iTunes Connect不接受该二进制文件,将会失败,因此我可以节省测试理论的时间,然后再将构建版本扔给Apple。我试图将一个成功的二进制文件与一个失败的二进制文件进行比较,但实际上并没有发现任何特别的东西对我而言有什么区别。

我仍然不满意如何工作,但很高兴我终于可以上传二进制文件了。干杯,祝你好运!