我正在开发一个依赖于依赖于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
答案 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应该找到它。