我在我的应用程序中添加了音频android-ffmeg库项目。 我在应用程序的libs文件夹中添加了一个名为libsox.so的文件。
通过ShellCallback调用该文件,查看文件系统。 问题是它会返回" nullPointerException ",具体取决于手机。在我的三星它没有问题,但这个问题出现在其他设备上。 问题看起来在第一行:
fileBinDir = new File(_context.getFilesDir().getParentFile(),"lib");
soxBin = new File(fileBinDir,"libsox.so").getCanonicalPath();
有人知道为什么在某些设备上找不到它?
答案 0 :(得分:0)
本地库的处理方式与资产不同。通常,每个平台都包含一个库(armebi,armebi-v7a和x86)。安装应用程序时,已安装的匹配库和其他库将被忽略。
如果要加载库,请改用System.loadlibrary("sox")
。 " lib"和" .so"部件将自动添加,Android知道它安装库的位置。
或者,您可以使用System.mapLibraryName(..)获取库文件名,然后使用当前类加载器的findLibrary(..)来获取库的路径。