私は 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
requires などのlibswscale.so.2
参照があり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
編集:ファイルを自動的にパッケージ化する方法はないようです。