应用程序被拒绝,因为缺少引用的框架

时间:2013-04-28 05:56:07

标签: objective-c xcode macos app-store

我在几个版本中没有弄乱我的OSX应用程序的框架引用,但由于某些原因,Apple决定拒绝我的最新版本,因为我缺少了引用。这是他们给我的唯一信息:

The app references frameworks which are missing. This may lead to unexpected bugs or undefined behavior. The missing frameworks are

'/Applications/MyApp.app/Contents/MacOS/MyApp' links against (missing, Relative): '@rpath/libavcodec.dylib'
'/Applications/MyApp.app/Contents/MacOS/MyApp' links against (missing, Relative): '@rpath/libavformat.dylib'
'/Applications/MyApp.app/Contents/MacOS/MyApp' links against (missing, Relative): '@rpath/libavutil.dylib'

这对我没有意义,因为我有一个构建阶段,用于将.dylib文件复制到Libraries子路径,我可以在/Contents/MacOS/Libraries下的应用包中看到.dylib文件。

我的应用的运行时搜索路径设置为LD_RUNPATH_SEARCH_PATHS = @rpath @rpath/Libraries @loader_path/Libraries @executable_path/../Frameworks

SDK框架设置为10.8,我的部署目标是10.6.8。

有什么想法吗?不幸的是,Apple不会再向我提供任何其他信息。

提前致谢!

1 个答案:

答案 0 :(得分:2)

这是我从Apple Developer Technical Support获得的回复:

  

此错误是我们用于解决@rpath的审核工具的限制   运行时的相对安装路径,具体如果是dylibs   安装到应用程序包的未指定的子目录中   / Contents /目录。我们通常不会遇到这个问题,因为   大多数开发人员将他们的dylib放入应用程序包中   / Contents / Framework或直接进入/ Contents / MacOS /文件夹-OR-   将子目录指定为相对路径的一部分。

     

这些相对安装名称路径记录在:   http://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/dyld.1.html

     

虽然我们建议开发人员使用Frameworks文件夹(通过   dylibs的'@executable_path /../ Frameworks /'安装名称路径)   你也可以使用MacOS文件夹(通过   '@ executable_path /'或'@rpath /')安装名称   路径)。

     

注意:您使用的@rpath将由我们的审核工具解决   它包括'库'子目录路径:   “@ rpath的/库/'.

修复方法是将ffmpeg dylibs移出Libraries文件夹并移入Frameworks文件夹。