0
  1. 我正在实现一个在 Android 上使用 LibAv/ffmpeg 的应用程序
  2. 我正在使用 JNI 与本机代码进行交互
  3. 我的“共享库”正在使用 libswscale.so、libavutil.so、libavformat.so、libavdevice.so、libavcore.so 和 libavcodec.so。
  4. 所有的“共享库”都经过验证打包到 APK 文件的同一目录中
  5. 我正在设备上调试(没有模拟器)
  6. Runtime.loadLibrary($MY_LIB_NAME) 触发 UnsatisfiedLinkError 异常
  7. 直接运行 'System.loadLibrary("swscale")' 也会导致 UnsatisfiedLinkError 异常

我的猜测是 libav*.so 依赖于应该添加到 APK 的其他库,但是,我不确定如何检测这些。有什么工具可以检测依赖的共享库吗?(窗口 ddepends 等效)?

任何帮助将不胜感激。

~纳达夫

4

1 回答 1

0

您可以使用 objdump 工具列出所需的共享库:

<ANDROID_NDK_ROOT>\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\bin\arm-linux-androideabi-objdump -p libNAME.so | grep NEEDED

那是给窗户的。为您的操作系统更改 objdump 工具的路径。

于 2012-02-02T18:39:20.830 回答