使用altool的XCode提交无法通过plink工作

ars1skjm  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(158)

我有iOS应用程序提交到AppStore的自动化。在Windows计算机中,执行批处理文件:

plink.exe -batch -pw [PASSWORD] [LOGIN]@[IP_ADDRESS] /Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support/altool --upload-app -f /Temp/upload.ipa --type ios -u [USERNAME] -p [PASSWORD]

PLink连接到远程MAC机器并执行altool,将应用上传到AppStore。代码在我更新两个XCode(i.例如altool)和plink,它不再工作。错误输出如下:

2023-04-28 07:02:57.682 *** Error: /usr/bin/ditto, terminated with status: 1
2023-04-28 07:02:57.686 *** Error: Validation failed for '/Temp/upload.ipa'.
2023-04-28 07:02:57.686 *** Error: The package could not be unpacked because of the following error: Unable to extract archive. Please make sure /Temp/upload.ipa is a valid zip or ipa archive. Unable to validate your application. (-20008)
 {
    NSLocalizedDescription = "The package could not be unpacked because of the following error: Unable to extract archive. Please make sure /Temp/upload.ipa is a valid zip or ipa archive.";
    NSLocalizedFailureReason = "Unable to validate your application.";
}

但是,如果我直接在MAC OS上执行altoolaltool的参数完全相同):

/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support/altool --upload-app -f /Temp/upload.ipa --type ios -u [USERNAME] -p [PASSWORD]

然后上传成功:

================
UPLOAD SUCCEEDED
Delivery UUID: *****
Transferred 54415023 bytes in 2.467 seconds (22.1MB/s)
================
No errors uploading '/Temp/upload.ipa'

我检查了它可以访问文件(如果我放错了文件名,我会得到一个不同的错误)。我尝试在altool之前添加sudo-这没有任何区别。显然所有的密码都是正确的,因为如果我输入了错误的密码,它会给我另一个错误。
我没办法了。请帮帮我
为什么直接使用altool可以工作,但在plink上不能远程工作?

ehxuflar

ehxuflar1#

好吧,找到解决方案后我觉得很愚蠢,但决定把它贴出来,以防它可能对任何人都有帮助。
我使用我在Mac OS桌面上创建的临时文件夹临时保存IPA文件。即使在我更改了读/写权限之后(文件夹和附带的项目),我仍然不能使它工作。解决方案是使用/private/tmp文件夹(别名只是/tmp,但别名从Windows远程不可见)。/tmp文件夹具有从头开始写入任何人的权限,因此您不需要更改任何内容。因此,这是“无法解包”消息的问题。我猜altool试图解开IPA的位置。
其次,这与我在Windows上执行批处理文件的工具有关-由于某种原因,altool将所有输出写入StandardError而不是StandardOutput。这很奇怪,但所有正常的消息都将进入标准错误输出,没有任何消息来自标准输出。所以,如果你尝试读取StandardOutput-你将一无所获。

相关问题