我已经为 Android 构建了 FFmpeg,并希望在这样的应用程序中使用它:
System.loadLibrary("avutil");
System.loadLibrary("swscale");
System.loadLibrary("avcodec");
System.loadLibrary("avformat");
构建输出是lib*.so
,lib*.so.MAJOR
和lib*.so.MAJOR.MINOR.OTHER
文件。共享对象内部是引用lib*.so.MAJOR
,例如libswscale.so.2
requires libavutil.so.52
。
现在,如果我将*.so
文件放在项目的libs
文件夹中(更准确地说libs/armeabi-v7a
),我当然会得到
01-25 12:06:40.270:E/AndroidRuntime(2905):java.lang.UnsatisfiedLinkError:无法加载库:link_image [1936]:107 无法为“libswscale.so”加载所需的库“libavutil.so.52” (load_library[1091]:找不到库'libavutil.so.52')
但是,如果我将*.so.MAJOR
文件放在文件libs
夹中以解决链接异常,则从 Eclipse 运行应用程序时会出现相同的错误。而且我注意到如果我创建一个 APK,文件甚至不会被导出!那么如何告诉 Eclipse 将*.so.MAJOR
文件打包为库呢?或者,我如何以它们相互引用*.so
而不是相互引用的方式编译共享对象*.so.MAJOR
?
编辑:似乎没有办法自动*.so.XYZ
打包文件。