2013-04-28 81 views
2

我在几个版本中没有与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子路径构建阶段,我可以看到文件名为.dylib我的应用程序包在/Contents/MacOS/Libraries下。

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

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

任何想法?不幸的是,苹果公司不会给我任何额外的信息继续下去。

在此先感谢!

+1

无论如何,在商业产品中使用FFmpeg是否存在法律问题? – 2013-04-28 06:04:56

+0

@PaulR FFmpeg可以通过GPL或LGPL – 2013-04-28 10:07:05

+0

获得许可阅读其许可证页面,尽管听起来似乎可能存在专利问题,并且他们警告说,如果您开始从您的产品中赚钱,您可能会被起诉。只是要注意的一点,我猜... – 2013-04-28 10:39:19

回答

2

这是我从苹果开发者技术支持得到的回应:

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

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

尽管我们建议开发者使用的框架文件夹(通过 的“@executable_path /../框架/”设置名称路径)dylibs 你也可以使用MacOS的文件夹(通过 “@ executable_path /”或'@ rpath /')安装名称 路径)。

注意:您使用的@rpath会被我们审阅工具 解决了它所包含的“库”子目录路径: “@ rpath的/库/”。

解决的办法是将ffmpeg dylibs移出Libraries文件夹并移入Frameworks文件夹。

相关问题