2013-04-28 89 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文件夾。

相關問題