3
  1. 混合モードのAndroidプロジェクトを構築していますが、プロジェクトはネイティブffmpegを使用しています
  2. Libsは
    2.1です。libavutil.so->libavutil.so.512.2
    。libavcodec.so->libavcodec.so.542.3
    。libavformat.so-> libavformat.so.54
  3. 私のJavaコードには、ネイティブライブラリをロードするための次のJNIセクションが含まれています。static
    {
         System.loadLibrary( "avutil");
         System.loadLibrary( "avcodec");
         System.loadLibrary( "avformat");
    }
  4. 「libavcodec.so」は「libavutil.so.51」に依存し、「libavutil.so」には依存しません。
  5. アクティビティを実行するとき  System.loadLibrary( "avcodec"); 「必要なライブラリ' libavutil.so.51 'を'libavcodec.so'にロードできませんでした(ライブラリ'libavutil.so.51'が見つかりません)」を除く
  6. 私のAndroid.mkには、APKにネイティブライブラリを追加するための次のセクションがあります

    。include$(CLEAR_VARS)
    LOCAL_MODULE:= mylib
    LOCAL_SRC_FILES:= ../../../mylib/libmylib.so
    include $(PREBUILT_SHARED_LIBRARY )。

  7. libmylib.soをlibmylib.so。%some number%に置き換えると、ビルドが失敗します[LOCAL_SRC_FILESは ".so"で終わるファイルを指す必要があります]


    上記を念頭に置いて、依存関係なしでlibavcodecをロードするにはどうすればよいですか?問題 ?
    • libavcodec.soの依存関係を修正して、libavutil.so.51ではなくlibavutil.soを指すようにすることはできますか?
    • Android.mkを変更して、libavutil.so.51(.SO以外の拡張子)をパックできるようにすることはできますか?その後、「System.loadLibrary」を使用してロード可能になりますか?

      どんな助けでもありがたいです!!!

      ソフィンのナダフ
4

1 に答える 1

0

回避策は、動的ライブラリではなく静的ライブラリを使用することでしたが、LGPL の制限により、商用利用には SharedLibs が必須であるため、これは一時的な回避策です。

于 2012-04-22T10:15:18.840 に答える