使用altool执行应用公证时报错Is a directory (21)如何解决
问题排查解决步骤
你遇到的报错核心是altool的--file参数不支持直接传入.app格式的应用包,.app本质是macOS下的bundle目录结构,并非单文件,因此触发「Is a directory」错误,可按以下步骤解决:
- 第一步:将签名完成的.app打包为zip压缩包
打包时需保留应用的签名、权限等元信息,推荐使用ditto命令执行打包:
也可右键点击.app文件选择「压缩」,效果一致。ditto -c -k --sequesterRsrc --keepParent "myapp.app" "myapp.zip" - 第二步:修改altool命令替换传入文件
将原命令中--file参数的取值替换为打包生成的zip包路径,修改后命令示例:xcrun altool --notarize-app --primary-bundle-id "me.myapp" --username me@live.com --password mypass --file "myapp.zip" - 第三步:若修改后仍报错,按以下方向核查
- 确认命令中填写的文件路径准确,未误指向其他目录
- 执行
xcode-select -p核查命令行工具路径是否指向当前使用的Xcode 13.1,若路径错误可执行以下命令修正:sudo xcode-select -s /Applications/Xcode.app/Contents/Developer - 提前核查.app是否已完成带hardened runtime选项的开发者ID签名,未签名的应用无法正常完成公证,签名命令示例:
codesign --force --options runtime --sign "Developer ID Application: 你的开发者账户名" "myapp.app"
内容的提问来源于stack exchange,提问作者techno
相关产品推荐
相关产品推荐

