BOYYANG/1/blog/compressed/动漫角色 动漫女孩 机甲女孩 二次元-b8096355622a3cc902fc1dd8f2fe22e2

Mac 桌面应用上架到苹果应用商店遇到错误代码(91109)

作者: boyyang
分类: 后端开发
发布: 2025-04-09 06:44:39
更新: 2025-04-09 06:44:39
浏览: 33

   在最近的一次应用上架的时候遇到了各种问题,网上找了很多,但是都没有解决该问题。同样的配置文件,同样的打包方式,在之前都是成功上传的,但是就这次遇到了问题。心里以为苹果不会加了啥限制吧,导致我这次打包的配置文件出了问题。

  报错完整代码如下:

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 [文件路径]

 通过该命令后,我再次打包上传,果然通过了。不得不说为了解决该问题浪费了我大量时间。



#go
#wails