
Mac 桌面应用上架到苹果应用商店遇到错误代码(91109)
在最近的一次应用上架的时候遇到了各种问题,网上找了很多,但是都没有解决该问题。同样的配置文件,同样的打包方式,在之前都是成功上传的,但是就这次遇到了问题。心里以为苹果不会加了啥限制吧,导致我这次打包的配置文件出了问题。
报错完整代码如下:
Invalid package contents. The package contains one or more files with the com.apple.quarantine extended file attribute, such as “com.wails.wallpaperCollector.pkg/Payload/wallpaperCollector.app/Contents/embedded.provisionprofile”. This attribute isn’t permitted in macOS apps distributed on TestFlight or the App Store. Please remove the attribute from all files within your app and upload again. (91109)
大概什么意思呢?意思是说在我上传的包文件中,有个叫【embedded.provisionprofile】文件的,什么属性是不被允许的。
看了报错信息,我知道了大概问题就出现在embedded.provisionprofile这个文件,可是这个文件我是在苹果开发提供的网站下载下来的配置文件啊。知道问题所在但是就是不知道怎么处理。
我尝试打包的时候不把这个文件打包进去,但是又会出现其它的各种问题,来来回回打了10几次,都会出现各种问题,替换了本地的打包证书,修改配置啥的,都无济于事。
后来我在网上搜索发现了问题所在,关健信息是【com.apple.quarantine】文件属性。
com.apple.quarantine是什么
通过询问AI,我得到了以下信息:
`com.apple.quarantine` 是 macOS 系统中的一个属性,用于标记文件是否经过 Apple 的软件安全检查。当一个文件被下载或从互联网上获取时,系统会自动添加这个属性,以帮助识别和防止恶意软件的传播。
具体来说,这个属性包含以下信息:
- `LSQuarantineType`:文件类型,例如是否是下载的文件。
- `LSQuarantineTimeStamp`:文件被标记的时间戳。
- `LSQuarantineOriginURLString`:文件来源的 URL。
- `LSQuarantineAgentName`:标记文件的软件名称。
这个属性通常用于确保用户下载的文件是安全的,防止恶意软件的传播。例如,当你在浏览器中下载一个文件时,这个文件会被标记为 `com.apple.quarantine`,并且 macOS 会显示一个警告,询问你是否要打开这个文件。
如何查看文件是否有这个属性呢
通过xattr 文件路径
xattr /Users/boyyang/Downloads/动漫角色\ 游戏角色\ 原神\ 二次元\ 动漫女孩.jpeg
执行命令后我得到了以下信息
com.apple.quarantine
通过 mdls 文件路径 获取更加详细的信息
mdls /Users/boyyang/Downloads/动漫角色\ 游戏角色\ 原神\ 二次元\ 动漫女孩.jpeg
执行命令后我得到了以下信息
_kMDItemDisplayNameWithExtensions = "动漫角色 游戏角色 原神 二次元 动漫女孩.jpeg"
kMDItemBitsPerSample = 24
kMDItemColorSpace = "RGB"
kMDItemContentCreationDate = 2025-04-09 05:03:45 +0000
kMDItemContentCreationDate_Ranking = 2025-04-09 00:00:00 +0000
kMDItemContentModificationDate = 2025-04-09 05:03:45 +0000
kMDItemContentType = "public.jpeg"
kMDItemContentTypeTree = (
"public.jpeg",
"public.image",
"public.data",
"public.item",
"public.content"
)
kMDItemDateAdded = 2025-04-09 05:03:45 +0000
kMDItemDisplayName = "动漫角色 游戏角色 原神 二次元 动漫女孩.jpeg"
kMDItemDocumentIdentifier = 0
kMDItemFSContentChangeDate = 2025-04-09 05:03:45 +0000
kMDItemFSCreationDate = 2025-04-09 05:03:45 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = (null)
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = (null)
kMDItemFSLabel = 0
kMDItemFSName = "动漫角色 游戏角色 原神 二次元 动漫女孩.jpeg"
kMDItemFSNodeCount = (null)
kMDItemFSOwnerGroupID = 20
kMDItemFSOwnerUserID = 501
kMDItemFSSize = 139787
kMDItemFSTypeCode = ""
kMDItemHasAlphaChannel = 0
kMDItemInterestingDate_Ranking = 2025-04-09 00:00:00 +0000
kMDItemKind = "JPEG图像"
kMDItemLogicalSize = 139787
kMDItemOrientation = 0
kMDItemPhysicalSize = 143360
kMDItemPixelCount = 2073600
kMDItemPixelHeight = 1080
kMDItemPixelWidth = 1920
kMDItemProfileName = "sRGB IEC61966-2.1"
回到正题,我明白了,也就是说我下载的配置文件系统给我打上了com.apple.quarantine属性,打包上传的时候,苹果检验文件的时候发现了有这个属性,所以就直接就退回了。
既然知道了问题所在那么删除了这个属性是不是就可以了呢,
xattr -r -d com.apple.quarantine [文件路径]
通过该命令后,我再次打包上传,果然通过了。不得不说为了解决该问题浪费了我大量时间。