【发布时间】:2015-07-28 08:12:38
【问题描述】:
在开发了我的第一个Mac app 之后,我决定将它提交给 Mac App Store,但它被拒绝了。基本上,我的应用程序使用 NSOpenPanel 读取 Xcode 项目文件,使用 NSSavePanel 在完成工作后保存文件。 审稿人指出该应用违反了 2.30 规则 - 不符合 Mac OS X 文件系统文档的应用将被拒绝,但我不清楚原因。
当您查看应用程序的工作区时,您会发现它使用 CocoaPods 来处理不应该成为问题的依赖项。接下来它有 JBLocalizer.framework,它作为嵌入式库链接到 JBLocalizerApp。 JBLocalizerApp 是发送给审核的最终目标。
以下是审稿人指出的问题:
2.30
应用程序访问以下位置:
'/Users/josipbernat/Library/Developer/Xcode/DerivedData/Build/Intermediates/ArchiveIntermediates/JBLocalizerApp/IntermediateBuildFilesPath/JBLocalizer.build/Release/JBLocalizer.build/Objects-normal/x86_64/JBString.gcda' '/Users/josipbernat/Library/Developer/Xcode/DerivedData/Build/Intermediates/ArchiveIntermediates/JBLocalizerApp/IntermediateBuildFilesPath/JBLocalizer.build/Release/JBLocalizer.build/Objects-normal/x86_64/JBPostProcessStringsOperation.gcda' '/Users/josipbernat/Library/Developer/Xcode/DerivedData/Build/Intermediates/ArchiveIntermediates/JBLocalizerApp/IntermediateBuildFilesPath/JBLocalizer.build/Release/JBLocalizer.build/Objects-normal/x86_64/JBOperation.gcda' '/Users/josipbernat/Library/Developer/Xcode/DerivedData/Build/Intermediates/ArchiveIntermediates/JBLocalizerApp/IntermediateBuildFilesPath/JBLocalizer.build/Release/JBLocalizer.build/Objects-normal/x86_64/JBLoadStringsInFileOperation.gcda' '/Users/josipbernat/Library/Developer/Xcode/DerivedData/Build/Intermediates/ArchiveIntermediates/JBLocalizerApp/IntermediateBuildFilesPath/JBLocalizer.build/Release/JBLocalizer.build/Objects-normal/x86_64/JBLoadSourceFilesOperation.gcda' '/Users/josipbernat/Library/Developer/Xcode/DerivedData/Build/Intermediates/ArchiveIntermediates/JBLocalizerApp/IntermediateBuildFilesPath/JBLocalizer.build/Release/JBLocalizer.build/Objects-normal/x86_64/JBLoadRootFilesOperation.gcda' '/Users/josipbernat/Library/Developer/Xcode/DerivedData/Build/Intermediates/ArchiveIntermediates/JBLocalizerApp/IntermediateBuildFilesPath/JBLocalizer.build/Release/JBLocalizer.build/Objects-normal/x86_64/JBFileController.gcda' '/Users/josipbernat/Library/Developer/Xcode/DerivedData/Build/Intermediates/ArchiveIntermediates/JBLocalizerApp/IntermediateBuildFilesPath/JBLocalizer.build/Release/JBLocalizer.build/Objects-normal/x86_64/JBFile.gcda'
遇到此问题的大多数开发人员正在打开文件 在读/写模式而不是只读模式下,在这种情况下它应该 改为只读。
此问题的其他常见原因包括:
在上述位置创建或写入文件,这些位置不是文档中所述的要写入文件的有效位置
写入上述位置而不使用有效的 app-id 作为写入文件的容器
请查看“App Store 的文件系统使用要求” 提交到 Mac App Store 以获取允许应用程序的位置 写作并寻求进一步的指导。
我真的不确定我的应用程序如何违反对所链接库的访问权限。有什么建议吗?
【问题讨论】:
-
看来您的本地化框架甚至没有被链接;以及他们如何返回 Xcode DerivedData 目录的绝对路径?
-
我不知道什么是 .gcda 文件,但我认为它们是动态创建的。 Cocoapods 添加了 XcodeEditor pod。 @I'L'I 为什么当我可以编译应用程序并在多台 Mac 上运行时,您认为该框架没有被链接?
-
屏幕截图中框架的红色文本颜色表明它没有与您的目标链接,或者在项目中丢失。我怀疑它在您的项目中,因为我可以看到它,但是,实际上 正在链接的那个丢失了。我建议删除
Embedded Libraries和Linked Frameworks and Libraries下的那个,然后在项目导航器中重新链接那个。 -
我同意红色文本颜色表示这一点,但目前它编译和运行没有问题。也许我会为此找到一些解决方案。同时我接受了下面的答案,因为它表明它可能是一个问题。感谢您的宝贵时间。