使用 xcode 上传存档:前缀或后缀无效

Posted

技术标签:

【中文标题】使用 xcode 上传存档:前缀或后缀无效【英文标题】:Uploading archive with xcode: Invalid prefix or suffix 【发布时间】:2020-02-26 15:31:21 【问题描述】:

早上好,

我正在尝试通过 Xcode 上传我的第一个应用程序。一切看起来都很好。我创建存档,如果我运行 Validate App,结果是有效的。

但是每当我尝试上传它时,它都会失败并显示以下消息:

执行时出现一般异常。 发生异常:前缀或后缀无效。

我没有发现任何类似的东西或任何可能发生的事情的提示。

任何帮助将不胜感激。

更新:使用 transporter 得到了这个日志

[2020-02-26 13:19:30 GMT-03:00] <main> DBG-X:   parameter Success = true
[2020-02-26 13:19:30 GMT-03:00] <main> ERROR: There was a general exception while executing
[2020-02-26 13:19:30 GMT-03:00] <main> ERROR: An exception has occurred: Invalid prefix or suffix
[2020-02-26 13:19:30 GMT-03:00] <main> DEBUG: java.lang.IllegalArgumentException: Invalid prefix or suffix
    at java.nio.file.TempFileHelper.generatePath(TempFileHelper.java:63)
    at java.nio.file.TempFileHelper.create(TempFileHelper.java:127)
    at java.nio.file.TempFileHelper.createTempFile(TempFileHelper.java:161)
    at java.nio.file.Files.createTempFile(Files.java:897)
    at com.apple.transporter.transport.http.impl.ObjectStoreTransport.transmitFilesForRequest(ObjectStoreTransport.java:455)
    at com.apple.transporter.transport.http.impl.ObjectStoreTransport.performDiagnostic(ObjectStoreTransport.java:435)
    at com.apple.transporter.transport.TransportByPodPolicy.performDiagnostic(TransportByPodPolicy.java:205)
    at com.apple.transporter.operation.Upload.performDiagnosticForTransport(Upload.java:474)
    at com.apple.transporter.operation.Upload.performUploadRequest(Upload.java:283)
    at com.apple.transporter.operation.Upload.performUploadRequest(Upload.java:129)
    at com.apple.transporter.operation.Upload.performRequest(Upload.java:1268)
    at com.apple.transporter.operation.Verify.execute(Verify.java:120)
    at com.apple.transporter.Application.reallyBegin(Application.java:224)
    at com.apple.transporter.Application.begin(Application.java:114)
    at com.apple.transporter.osgi.TransporterService.start(TransporterService.java:87)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.apple.transporter.starter.TransporterStarter.runService(TransporterStarter.java:476)
    at com.apple.transporter.starter.TransporterStarter.runTransporterService(TransporterStarter.java:450)
    at com.apple.transporter.starter.TransporterStarter.start(TransporterStarter.java:188)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.apple.transporter.bootstrap.BootstrapperPhase2.runStartable(BootstrapperPhase2.java:355)
    at com.apple.transporter.bootstrap.BootstrapperPhase2.runStarter(BootstrapperPhase2.java:317)
    at com.apple.transporter.bootstrap.BootstrapperPhase2.start(BootstrapperPhase2.java:130)
    at com.apple.transporter.bootstrap.BootstrapperPhase1.startOSGiFramework(BootstrapperPhase1.java:321)
    at com.apple.transporter.bootstrap.BootstrapperPhase1.bootstrap(BootstrapperPhase1.java:99)
    at com.apple.transporter.bootstrap.BootstrapperPhase1.bootstrap(BootstrapperPhase1.java:59)
    at com.apple.transporter.launcher.Launcher.launchBootstrapper(Launcher.java:37)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.apple.transporter.launcher.Application.start(Application.java:220)
    at com.apple.transporter.launcher.Application.main(Application.java:658)

[2020-02-26 13:19:30 GMT-03:00] <main> DBG-X: Returning 1

可能与生成的 IPA 无关?

【问题讨论】:

【参考方案1】:

就在我开始反编译 .jar 文件以尝试对其进行逆向工程时,我的同事告诉我他是如何解决这个问题的。这纯粹是精神错乱。

首先,使用 Transporter 应用程序(从应用商店获取)。打开它并转到首选项。取消选中“Signiant”传输协议,如下所示:

现在从您构建的存档中导出 .ipa 或 .pkg 包,将其放入 Transporter 并开始上传。

如何导出包:

转到管理器(窗口 -> 管理器),选择您的捆绑包并按“分发应用程序”。选择 App Store Connect -> 导出 -> ...

【讨论】:

它帮了我很多..!!【参考方案2】:

tl;博士;

1) 将您的时区更改为 UTC 或

2) 将行 DEFAULT_JVM_OPTIONS="-Duser.timezone=UTC$DEFAULT_JVM_OPTIONS:+ $DEFAULT_JVM_OPTIONS" 添加到文件 iTMSTransporter 就在JAVA_EXECUTABLE=$JVM_EXECUTABLE 之前。 XCode 的文件位于 /Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/itms/bin 或 Transporter 的 /Applications/Transporter.app/Contents/itms/bin。在这个答案的时候。在未来的版本中可能会发生变化。

详情:

我遇到了同样的问题,在花了一大堆时间在谷歌上搜索解决方案后,我最终调试了传输器 jar 文件。 原来它使用用户时区来生成一些临时文件,如果时区包含“/”,它将失败,因为它不允许在文件名中,因为它是文件夹分隔符。如此愚蠢的错误和运输工具开发人员的耻辱!

我不是 Java 开发人员,对 Java 程序如何运行和使用所有这些 tmp 文件和时区的知识为零,因此不知道是否有其他方法可以解决该问题。如果有人最终会得到更好的解决方案,请分享。 不管怎样,我要报告一个错误。

【讨论】:

我只是想知道为什么它过去大部分时间都可以工作,有时会发生这个错误。我没有改变我的时区或任何东西。而且它也没有解释为什么禁用“Signiant”协议有效。这太奇怪了。 天哪!方法 #2 很有帮助!我已经被这个问题困扰了两个月,不得不使用关闭了signiant选项的运输工具。 添加行帮助 你是最棒的! UTC 时区对我有用! sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime【参考方案3】:

不知道具体原因,但更改 Wifi 连接有效。

在以下位置找到有关此错误的其他信息: https://forums.developer.apple.com/thread/128983

【讨论】:

以上是关于使用 xcode 上传存档:前缀或后缀无效的主要内容,如果未能解决你的问题,请参考以下文章

使用准备好的语句将多个带前缀的表移动到存档数据库,为啥这个 MySQL 语句无效?

Xcode 存档验证错误 - Xcode 9 和 Swift 4

前缀标头中的 XCode 存档错误

Xcode 5.1 + 资产目录 + 存档 = AppIcon 无效图像路径

上传存档错误:“缺少...的 iOS 分发签名身份”

捆绑包无效 Mac OS X