Important: Please read the Qt Code of Conduct -

[Solved][Qt][Android]How can i add my own (librarys)*.so files into apk and use them?

  • Hi, guys:

    When i using Qt for Android to deploy an apk, I want to use my own librarys in the application, so I copy the *.so files into the folder "android\libs\armeabi-v7a". After deployment, I did find the so files in apk,but when i use QLibrary::load to load the librarys, it failed. anybody can help?

  • Actually this is exactly how it works. Copy the file into that folder. Im using opencv with Qt on android and needed the native camera lib in the apk. So I copied it there and now its in the apk/libs
    Maybe you didnt check "Bundle Qt Libraries in APK" (Qt 5.1.1)

  • So where can i find this check "Bundle Qt Libraries in APK"?

  • You need Qt5.1.1 for android, then go to your project's settings -> Run -> Deploy configurations -> Bundle Qt Libraries in APK

  • I use Qt 5.1.0 for android, it don't have that kind of check. But I don't think this is the way to solve my problem.
    here is the details:
    1、I use the default c++ library project created by the QtCreator as my lib;
    2、I use the Qt Quick2 Application created by Creator as my mainApp;
    3、I use QLibrary::Load in my mainApp to dynamic load the c++ library;
    4、I copy the library to the folder "android/libs/armeabi-v7a";
    5、Deploy the mainApp(now the library in the apk/libs/armeabi-v7a);
    6、Install the mainApp in phone 、run it, and fail to load the library;

  • Thanks moster, I will have a try

  • The method provided did works!
    Here is my conclusion:
    To add your own library into android application with Qt for Android:
    1、Copy your libraries into the folder "android/libs"

    2、If your application implicit dependent on the libraries, u have to modify the pro file, add " LIBS += -L"path of the lib" -llibname "

    3、Modify "android/res/values/libs.xml".
    Add the following:
    @<array name="any_name_you_want">

    4、Modify "androidManifest.xml"
    replace the lines:
    @<meta-data android:name="" android:resource="@array/bundled_libs"/>@
    @<meta-data android:name="" android:resource="@array/any_name_you_want"/>@

    The reason why we don't use bundled_libs to add our libraries is everytime we deploy the app, Qt will replace the bundled_libs in libs.xml with its own data, I don't know if this is a bug or something else.

    5、Now it should be ok to load your libraries in app.

Log in to reply