QT5 Android未打包版本化的SharedObject

QT5 Android未打包版本化的SharedObject,android,qt,android-ndk,cross-compiling,qt5,Android,Qt,Android Ndk,Cross Compiling,Qt5,我对QT5和Android有问题。我试图使用libpurple的交叉构建(感谢GoogleSummerOfCode),但它并没有将其打包到apk和Java中 E/AndroidRuntime( 1496): java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1937]: 1725 could not load needed library 'libpurple.so.20' for 'libSimpleChat.so'

我对QT5和Android有问题。我试图使用libpurple的交叉构建(感谢GoogleSummerOfCode),但它并没有将其打包到apk和Java中

E/AndroidRuntime( 1496): java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1937]: 1725 could not load needed library 'libpurple.so.20' for 'libSimpleChat.so' (load_library[1092]: Library 'libpurple.so.20' not found)

libpurple.so.20
是指向
libpurple.so.20.0
的符号链接,重命名不会改变任何东西,如果我在android
lib
文件夹中复制此链接,它将被忽略(只有
.so
libs被打包)。即使我将其重命名为
libpurple.so
,它也不起作用,因为
libpurple.so.20
似乎是用二进制文件硬编码的。

我也有类似的问题,通过使用无版本的soname重新编译共享库来解决

$objdump -x libpurple.so | g 'SONAME'
    SONAME    libpurple.so
检查共享库的soname:

$objdump -x libpurple.so | g 'SONAME'
您应该看到如下内容:

SONAME    libpurple.so.20
重建库并提供一个无版本的soname:

arm-linux-androideabi-gcc -shared -fPIC .... \
    -Wl,-soname,libpurple.so -o libpurple.so
现在,共享库应该有一个无版本的soname

$objdump -x libpurple.so | g 'SONAME'
    SONAME    libpurple.so
当您将此共享库与自己的库链接时,它将使用非版本库名称

$objdump -x libSimpleChat.so | g 'NEED'
    NEEDED    libpurple.so

您的android/res/values/libs.xml中有哪些捆绑的_libs?