【问题标题】:Android NDK, could not find dependent libraryAndroid NDK,找不到依赖库
【发布时间】:2013-10-07 09:05:00
【问题描述】:

我试图实现 NDK 共享库需要在 Linux 中编译为 .so 文件的其他外部本机库。

我有如下关系:libl1依赖libl2。

我尝试将预构建的 libl2.so 作为共享并将其添加到 libl1 模块中。当我像这样加载 libl1 时,一切都编译得很好,并且在我的 LG Nexus 4 上工作正常:

static {
  System.loadLibrary('l1');
}

但它不适用于三星 4.03 Android 版本。在此设备中,它使用以下代码:

static {
  System.loadLibrary('l2');
  System.loadLibrary('l1');
}

我发现Android ClassLoader 无法加载依赖。但为什么它在 Nexus 4 上运行良好?但不是三星设备?

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

    您在 Nexus4 上看到的行为不是预期的,我再次测试没有特殊处理,至少在 v. 4.2.2(构建 JDQ39)。也许您的 Nexus 上安装了其他 Android 设备?也许您的设备出于某种原因碰巧有文件/system/lib/libl2.so

    您的三星设备的行为是预期的,并且是 Android 团队认为正确的。所有共享库都必须按照它们从 Java 中的依赖顺序加载,或者如果您愿意,您可以随时显式调用 dlopen(),但请放弃使用链接器为您解析这些共享库中的函数引用的所有简单性。

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      相关资源
      最近更新 更多