2013-10-07 68 views
1

我试图执行NDK共享库需要在Linux下编译为.so文件等外部本地库。的Android NDK,找不到依赖库

我有以下关系:libl1取决于libl2。

我试图预建libl2.so为共享并添加入libl1模块。

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

不过,这并不三星4.03 Android版本的工作:当我加载libl1这样一切编译罚款和我LG的Nexus 4的罚款。在这个设备中它与这个代码一起工作:

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

我发现Android ClassLoader无法加载依赖关系。但为什么它在Nexus 4上正常工作?但不是三星设备?

回答

2

上Nexus4您所看到的行为不是预期了,我再次测试,没有特殊待遇,至少在诉4.2.2(建JDQ39)。也许你的Nexus上安装了其他一些Android?也许你的设备出于任何原因碰巧有文件/system/lib/libl2.so

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