我正在加载一个依赖libgnustl_shared.so
我使用以下方式调用mylib.so
和gnustl_shared
System.load("/data/data/package/files/libgnustl_shared.so");
System.load("/data/data/package/files/mylib.so");
来自外部包,由于产品要求(而不是来自jniLibs - loadlibrary)
它就像每个设备上的魅力一样,但是在lg g4 armv8 liba.so
上找不到libgnustl_shared
。它在其他armv8手机上运行良好。
怎么会发生? 有没有人知道如何以通用\ spesific方式解决这个问题?
答案 0 :(得分:1)
感谢Alex Cohn的回答
LG G4设备在system / lib64文件夹中有libstlport.so。这个lib是另一个c ++帮助程序运行时。描述于: http://developer.android.com/ndk/guides/cpp-support.html
当调用system.load()到libgnustl_shared.so时,设备从lib64调用libstlport而不是指定的路径。因为jni模块不是建立在libstlport上的,并且它在mylib内部有不同的代码。所以无法处理这种情况
溶液:
使用gnustl_static
编译jni libs从主应用程序的范围调用libgnustl_shared和编译库(mylib.so),而不是从外部库的范围调用。 即:
的System.loadLibrary( “gnustl_shared”); 的System.loadLibrary( “your_native_library”);