Install4J执行Mac安装包Apple公证时出现dmg上传失败错误
故障表现
使用Install4J构建Mac安装包执行Apple公证流程时,抛出如下错误:
故障原因:com.exe4j.a.d
无法上传XXXX.dmg文件:Unable to deserialize httpBody as json. (code -19205)
核心原因说明
错误码-19205是Install4J内部HTTP模块抛出的本地错误,代表程序向Apple公证服务发送请求前,构造JSON格式请求体时序列化失败,请求根本没有送达Apple公证服务器,和dmg本身的签名合规性、Apple公证服务侧的审核规则没有关系,无需去Apple公证后台查询记录,后台不会留存该次请求的日志。
常见触发场景包括:
- Install4J版本过低,内置的Apple公证API适配逻辑存在已知bug
- 公证凭据配置存在非法字符、空值,导致JSON序列化时字段类型不匹配
- 待上传dmg的路径、文件名存在异常字符,Install4J读取文件元数据时拿到非法值
- 本地网络代理/网关干扰请求构造逻辑,导致JSON结构损坏
排查修复步骤
按优先级从高到低依次操作:
- 升级Install4J到稳定新版本
10.0.4之前的Install4J版本存在明确的公证API适配bug:对接Apple 2023年底升级的Notary API v2时,会将文件大小字段以字符串类型传入JSON,触发序列化失败。直接升级到10.0.4及以上的正式稳定版,避开beta版本即可修复绝大多数该错误。 - 校验公证凭据有效性
检查Install4J公证配置页填写的三项核心凭据:App Store Connect API私钥(.p8文件)、Key ID、Issuer ID:- 所有输入字段不要夹带空格、换行、全角字符、emoji,确保没有多余的不可见字符
- .p8私钥必须是从App Store Connect直接下载的原始文件,不得手动修改文件名、编辑文件内容,下载后不要用文本编辑器打开触发自动保存修改
- 本地执行命令验证凭据可用性:
xcrun notarytool history --key <p8文件绝对路径> --key-id <你的KeyID> --issuer <你的IssuerID>,命令能正常返回历史公证记录即代表凭据本身有效,问题出在Install4J的配置读取环节。
- 规范dmg文件路径与命名
把待上传的dmg移动到纯英文、无空格、无特殊字符的短路径下,比如/tmp/notarize/install.dmg,去掉文件名里的中文、特殊符号、emoji,同时确认dmg文件本地可以正常挂载、没有损坏,文件大小不超过Apple公证10GB的单文件上限。 - 排查网络干扰
临时关闭本地系统代理、VPN、HTTPS抓包工具、企业内网网关代理,切换到直连公网的网络(比如手机热点)重试,这类会篡改HTTPS请求内容的工具很容易干扰Install4J的请求构造逻辑。 - 开启调试日志定位具体异常字段
如果以上操作都无效,将Install4J的构建日志级别调整为DEBUG,重新触发公证流程,在日志中查找HTTP请求体构造的相关输出,定位到值异常的字段后对应修正配置即可。
内容的提问来源于stack exchange,提问作者Mossie
相关产品推荐
相关产品推荐

