Xcode 10,WatchKit 应用程序和分发错误 ITMS-90334 com.apple.wk

Xcode 10, WatchKit app and distribution error ITMS-90334 with com.apple.wk

我有一个项目,里面有 WatchKit 应用程序。

它曾经在 Xcode 8 和 Xcode 9 中使用自动签名和分发顺畅地工作。 Xcode 10 弄坏了东西。

我现在有的是这个

这里的重点是"com.apple.wk" 据我了解,它是组织者在重新签名阶段的某个地方添加的。

我检查了我的项目 quadriple,我 100% 确定它在任何地方都不包含 "com.apple.wk" 字符串。

我切换到手动签名。已创建新的 iOS 分发证书。为 app、watch app、watchapp extension 生成了 3 个具有正确捆绑包的 Provision 配置文件。同样的错误在这里。

我尝试清理项目,open\close Xcode,重新启动系统。没有运气。 由于上述错误,我无法将我的 IPA 转移到 iTunes。

我尝试导出 IPA 并使用 Application Loader 分发它。运气不好。

我发现的唯一一个地方 "com.apple.wk" 字符串是在打包日志中

2018-09-21 06:54:33 +0000  /var/folders/gg/jxvtgf9n07s9m0z_vzqlx0c00000gn/T/XcodeDistPipeline.4mX/Root/Payload/myApp.app/Watch/myApp Watch App.app: replacing existing signature    
2018-09-21 06:54:34 +0000  /var/folders/gg/jxvtgf9n07s9m0z_vzqlx0c00000gn/T/XcodeDistPipeline.4mX/Root/Payload/myApp.app/Watch/myApp Watch App.app: signed app bundle with Mach-O universal (armv7k (33554444:1)) [com.apple.WK]

同时主应用程序和扩展程序已使用正确的包 ID 退出

2018-09-21 06:54:34 +0000  /var/folders/gg/jxvtgf9n07s9m0z_vzqlx0c00000gn/T/XcodeDistPipeline.4mX/Root/Payload/myApp.app: replacing existing signature
2018-09-21 06:54:34 +0000  /var/folders/gg/jxvtgf9n07s9m0z_vzqlx0c00000gn/T/XcodeDistPipeline.4mX/Root/Payload/myApp.app: signed app bundle with Mach-O universal (armv7 arm64) [com.myAppBundleName]
&
2018-09-21 06:54:33 +0000  /var/folders/gg/jxvtgf9n07s9m0z_vzqlx0c00000gn/T/XcodeDistPipeline.4mX/Root/Payload/myApp.app/Watch/myApp Watch App.app/PlugIns/myApp Watch App Extension.appex: signed bundle with Mach-O universal (armv7k (33554444:1)) [com.myAppBundleName.watchkitapp.watchkitextension]

非常感谢任何关于如何交付我的应用程序的想法。

有两种选择:

a. 打开项目的每个目标并将架构更改为 $(ARCHS_STANDARD) 清理构建文件夹并尝试照常上传。这应该允许您像往常一样通过管理器自动发送它。

b. 如果上面的方法不起作用,请尝试下一步:

  1. 单击 "Archive" 和 XCode 并获取 xcarchive 文件
  2. 在 Finder 中打开存档
  3. 开始通过管理器分发按钮分发到 App Store 存档
  4. 得到上面的错误
  5. 导出创建的 ipa 文件
  6. 从导出目录打开 packaging.log 文件
  7. 搜索 "com.apple.wk" 字符串以找到一个
  8. 在此处对来自打包日志的协同设计请求进行分析和尝试

    /usr/bin/codesign '-vvv' '--force' '--sign' 'B5152DB7C8BC97C444D44341275F5E1B3336BA3B' '--entitlements' '/var/folders/gg/jxvtgf9n07s9m0z_vzqlx0c00000gn/T/XcodeDistPipeline.vsk/entitlements3uMHR5' '-- preserve-metadata=identifier,flags,runtime' '/var/folders/gg/jxvtgf9n07s9m0z_vzqlx0c00000gn/T/XcodeDistPipeline.vsk/Root/Payload/myApp.app/Watch/myApp 观看 App.app'

  9. 弄清楚,如果我删除这个 '--preserve-metadata=identifier,flags,runtime' 并在 bash 中重新运行这段代码,一切都进行得很顺利,二进制文件是用正确的包 ID 签名的,而不是用这个 com.apple.wk

  10. 将这个已签名的嵌入式(您可以在上面的请求中找到的路径)watch 应用程序二进制文件复制到第一步创建的 xcarchive 文件中,并替换旧文件。
  11. 开始与组织者一起分发回 App Store
  12. 瞧,已经上传了。

希望对大家有所帮助。