我在几个版本中没有弄乱我的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不会再向我提供任何其他信息。
提前致谢!
答案 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
文件夹。