gpt4 book ai didi

android - SharedLib 依赖@混合模式 APK

转载 作者:太空狗 更新时间:2023-10-29 15:18:32 26 4
gpt4 key购买 nike

  1. 我正在构建一个混合模式的 Android 项目,该项目使用的是原生 ffmpeg
  2. 图书馆是
    2.1. libavutil.so -> libavutil.so.51
    2.2. libavcodec.so -> libavcodec.so.54
    2.3. libavformat.so -> libavformat.so.54
  3. 我的 Java 代码包含以下用于加载 native 库的 JNI 部分:
    静态{
    System.loadLibrary("avutil");
    System.loadLibrary("avcodec");
    System.loadLibrary("avformat");

  4. “libavcodec.so”依赖于“libavutil.so.51”而不是“libavutil.so”。
  5. 运行我的 Activity 时 System.loadLibrary("avcodec"); 除外 “无法为‘libavcodec.so’加载所需的库‘libavutil.so.51’(库‘ libavutil.so.51' 未找到)”
  6. 在我的 Android.mk 上,我有以下部分将 native 库添加到 APK:

    包括 $(CLEAR_VARS)
    LOCAL_MODULE := mylib
    LOCAL_SRC_FILES := ../../../mylib/libmylib.so
    包括 $(PREBUILT_SHARED_LIBRARY)

  7. 将 libmylib.so 替换为 libmylib.so.%some number% 会导致构建失败并显示 [LOCAL_SRC_FILES 应指向以“.so”结尾的文件]


    考虑到上述情况,我怎样才能加载 libavcodec 而没有依赖性问题?
    • 我能否修复 libavcodec.so 依赖项以指向 libavutil.so 而不是 libavutil.so.51?
    • 我可以更改 Android.mk 以便它能够打包 libavutil.so.51(非 .SO 扩展名)吗?然后可以使用“System.loadLibrary”加载它吗?

      我们将不胜感激!!!

      Sophin 的 Nadav

最佳答案

解决方法是简单地使用静态库而不是动态库,但是,由于 LGPL 限制,SharedLib 是商业用途所必需的,因此这是一个临时的解决方法。

关于android - SharedLib 依赖@混合模式 APK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10247340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com