2014-12-10 94 views
0

我在我的應用程序中添加了音頻android-ffmeg庫項目。 我在應用程序的libs文件夾中添加了一個名爲libsox.so的文件。訪問應用程序包中的libs文件夾

該文件通過ShellCallback調用,查找文件系統。 問題是,它返回一個「nullPointerException」,具體取決於手機。在我的三星上它沒有問題,但這個問題出現在其他設備上。 問題看起來是在第一行:

fileBinDir = new File(_context.getFilesDir().getParentFile(),"lib"); 

soxBin = new File(fileBinDir,"libsox.so").getCanonicalPath(); 

有人知道它爲什麼不能某些設備上找到?

回答

0

本機庫的處理方式與資產不同。通常你爲每個平臺包含一個庫(armebi,armebi-v7a和x86)。安裝應用程序時,已安裝的匹配庫以及其他庫僅被忽略。

如果您想要加載庫,請改用System.loadlibrary("sox")。 「lib」和「.so」部分將自動添加,Android知道它安裝庫的位置。

或者,您可以使用System.mapLibraryName(..)獲取庫文件名,然後使用當前類加載器的findLibrary(..)獲取庫的路徑。

+0

非常感謝羅伯特的明確解釋,它解決了我的問題。 – 2014-12-11 09:06:53

相關問題