其他分享
首页 > 其他分享> > android – JNI_OnLoad返回坏版本(-1)

android – JNI_OnLoad返回坏版本(-1)

作者:互联网

我正在尝试在我的Android应用程序中加载Qt5Core库,我得到了这个:

JNI_OnLoad returned bad version (-1) in /data/data/com.xxx.yyy/lib/libQt5Core.so 0x41a8f3c0
Failed to load library : Qt5Core due to link error unknown failure
java.lang.UnsatisfiedLinkError: unknown failure
at java.lang.Runtime.loadLibrary(Runtime.java:370)

这是我试图加载它的方式:

System.loadLibrary(s);

其中“s”是包含多个库名的数组.其他库正确加载..

欢迎任何想法!

编辑

所以我先得到这个:

D/dalvikvm(11445): Trying to load lib
/data/app-lib/com.xxx.yyy/libQt5Core.so 0x42666fd8
D/dalvikvm(11445): Added shared lib
/data/app-lib/com.xxx.yyy/libQt5Core.so 0x42666fd8

E/LibrariesLoader(11445): Failed to load library : Qt5Core due to link
error JNI_ERR returned from JNI_OnLoad in
“/data/app-lib/com.xxx.yyy/libQt5Core.so”

E/LibrariesLoader(11445): java.lang.UnsatisfiedLinkError: JNI_ERR
returned from JNI_OnLoad in “/data/app-lib/com.xxx.yyy/libQt5Core.so”

…然后有另一个库加载没有任何错误/警告.该库具有Qt5Core.so作为依赖.

我已经调查过,因为以下代码,我得到了这个JNI_ERR:

if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_6) != JNI_OK)
return JNI_ERR;

我正在使用的JNI版本是1.6 !!!!

解决方法:

QtCore的JNI_OnLoad在启动时加载一个名为“QtNative”的活动,如果找不到则返回JNI_ERR.

QtNative在“QtAndroid-bundled.jar”中定义.您可以在QT 5.3 SDK文件夹中找到它:
    QT5 / 5.3 / android_armv7 /罐/ QtAndroid-bundled.jar

只需将其添加到项目的“libs”文件夹即可.

标签:android,android-ndk,qt5,unsatisfiedlinkerror,java-native-interface
来源: https://codeday.me/bug/20190528/1173130.html