依赖于SO文件的JAR依赖性

时间:2015-04-24 13:44:47

标签: android java-native-interface android-gradle

我正在开发一个依赖于依赖于SO文件的JAR文件的应用程序(WebRTC)。

我能够加载JAR文件,但我的问题是它无法加载SO文件。

  

dlopen(“/ data / app-lib / com.webrtc.peerrtc-2 / libjingle_peerconnection_so.so”)失败:dlopen失败:“/ data / app-lib / com.webrtc.peerrtc-2 / libjingle_peerconnection_so.so “有意想不到的e_machine:3

2 个答案:

答案 0 :(得分:3)

  

“/ data / app-lib / com.webrtc.peerrtc-2 / libjingle_peerconnection_so.so”有意想不到的e_machine:3

这意味着动态链接器已经找到了为e_machine 3构建的库,它是i386,当它需要其他东西时,例如为ARM体系结构构建的库。

通常,Android会根据包含它的文件夹的名称来决定从哪个库中提取以供使用。看起来你的jar或你的项目本身正在将i386版本的库放在你运行的任何目标体系结构的那个地方。

您可以尝试使用zip文件工具来检查jar和apk。

如果您正在Linux系统上进行开发,file命令可能会告诉您<。em> .so文件中指定的机器类型,允许您确定它是否具有被放置在错误的目录中。

答案 1 :(得分:0)

您是否将so库放在给定体系结构的相应src / main / jniLibs文件夹中? (如果你还在Eclipse中,它必须在libs / [arch]下)。把它放到那里后,Android应该加载它,JAR应该找到它。