Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. "QSqlDatabase: QSQLITE driver not loaded" error in deploying a Qt-Android project using JNI with Android studio

"QSqlDatabase: QSQLITE driver not loaded" error in deploying a Qt-Android project using JNI with Android studio

Scheduled Pinned Locked Moved Solved General and Desktop
androidqt 5.7android studiojava jnisqlite
15 Posts 3 Posters 2.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    Christian Ehrlicher
    Lifetime Qt Champion
    wrote on 4 Apr 2020, 08:27 last edited by
    #2

    The path is wrong - see https://doc.qt.io/qt-5/deployment-plugins.html
    Also make sure that the dependencies to libsqsqlite.so (I would quess libsqlite.so) is available.

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    M 1 Reply Last reply 4 Apr 2020, 08:51
    0
    • C Christian Ehrlicher
      4 Apr 2020, 08:27

      The path is wrong - see https://doc.qt.io/qt-5/deployment-plugins.html
      Also make sure that the dependencies to libsqsqlite.so (I would quess libsqlite.so) is available.

      M Offline
      M Offline
      morteza ali ahmadi
      wrote on 4 Apr 2020, 08:51 last edited by
      #3

      @Christian-Ehrlicher Thanks, but it is said in the link which you mentioned,
      " If you want Qt to look in additional places you can add as many paths as you need with calls to QCoreApplication::addLibraryPath()."
      And I add my path using QCoreApplication::addLibraryPath().". Why this is wrong?

      1 Reply Last reply
      0
      • C Offline
        C Offline
        Christian Ehrlicher
        Lifetime Qt Champion
        wrote on 4 Apr 2020, 09:43 last edited by Christian Ehrlicher 4 Apr 2020, 09:44
        #4

        @morteza-ali-ahmadi said in "QSqlDatabase: QSQLITE driver not loaded" error in deploying a Qt-Android project using JNI with Android studio:

        Why this is wrong?

        Because you don't need it when you use the correct location in the first place. It just make it more complicated than it really is and confuses others when reading your post (as you're already confused about while searching the net)
        And, as already said, make sure you also have the needed dependencies for the plugin available.

        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
        Visit the Qt Academy at https://academy.qt.io/catalog

        M 1 Reply Last reply 4 Apr 2020, 10:18
        0
        • C Christian Ehrlicher
          4 Apr 2020, 09:43

          @morteza-ali-ahmadi said in "QSqlDatabase: QSQLITE driver not loaded" error in deploying a Qt-Android project using JNI with Android studio:

          Why this is wrong?

          Because you don't need it when you use the correct location in the first place. It just make it more complicated than it really is and confuses others when reading your post (as you're already confused about while searching the net)
          And, as already said, make sure you also have the needed dependencies for the plugin available.

          M Offline
          M Offline
          morteza ali ahmadi
          wrote on 4 Apr 2020, 10:18 last edited by
          #5

          @Christian-Ehrlicher Thanks, Ok.
          As mentioned in this For checking dependency of libqslite.so, I run these commands, is this right?

              QLibrary lib("libqsqlite.so");
              if (! lib.load()) {
                qDebug() << "Library load error:" << lib.errorString();
              }
          
              QPluginLoader lib2("libqsqlite.so");
              if (! lib2.load()) {
                qDebug() << "Library load error:" << lib2.errorString();
              }
          
          1 Reply Last reply
          0
          • C Offline
            C Offline
            Christian Ehrlicher
            Lifetime Qt Champion
            wrote on 4 Apr 2020, 10:28 last edited by
            #6

            I would run 'ldd' on the shell if there is any but yes, basically you can try to load them with QLibrary and see what the error is (if there is any)

            Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
            Visit the Qt Academy at https://academy.qt.io/catalog

            M 1 Reply Last reply 4 Apr 2020, 10:38
            0
            • C Christian Ehrlicher
              4 Apr 2020, 10:28

              I would run 'ldd' on the shell if there is any but yes, basically you can try to load them with QLibrary and see what the error is (if there is any)

              M Offline
              M Offline
              morteza ali ahmadi
              wrote on 4 Apr 2020, 10:38 last edited by morteza ali ahmadi 4 Apr 2020, 10:45
              #7

              @Christian-Ehrlicher After running ldd, this error appears:

              not a dynamic executable
              

              Using QLibrary, show this error:

                  Trying... "/storage/emulated/0/plugins/libqsqlite.so"
                  Trying... "/storage/emulated/0/plugins/libqsqlite.so.so"
                  Trying... "/storage/emulated/0/plugins/liblibqsqlite.so"
                  Trying... "/storage/emulated/0/plugins/liblibqsqlite.so.so"
                  "libqsqlite.so" not found
                  Library load error: "The shared library was not found."
              

              Don't forget I build and deploy this application using android studio on my Android device.
              It seems that the library path can not be identified. I am confused. How can I load that?

              1 Reply Last reply
              0
              • C Offline
                C Offline
                Christian Ehrlicher
                Lifetime Qt Champion
                wrote on 4 Apr 2020, 11:11 last edited by
                #8

                @morteza-ali-ahmadi said in "QSqlDatabase: QSQLITE driver not loaded" error in deploying a Qt-Android project using JNI with Android studio:

                After running ldd, this error appears:

                This is what I expected - 'I would run 'ldd' on the shell if there is any' - you can't run ldd on the target so running it on the build system will not help at all.

                I would take a look with QFile/QFileInfo to see where the library is.

                Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                Visit the Qt Academy at https://academy.qt.io/catalog

                M 1 Reply Last reply 4 Apr 2020, 14:30
                0
                • C Christian Ehrlicher
                  4 Apr 2020, 11:11

                  @morteza-ali-ahmadi said in "QSqlDatabase: QSQLITE driver not loaded" error in deploying a Qt-Android project using JNI with Android studio:

                  After running ldd, this error appears:

                  This is what I expected - 'I would run 'ldd' on the shell if there is any' - you can't run ldd on the target so running it on the build system will not help at all.

                  I would take a look with QFile/QFileInfo to see where the library is.

                  M Offline
                  M Offline
                  morteza ali ahmadi
                  wrote on 4 Apr 2020, 14:30 last edited by
                  #9

                  @Christian-Ehrlicher Finally in loading libqsqlite.so, this error appears:

                  library "/storage/emulated/0/plugins/sqldrivers/libqsqlite.so" ("/storage/emulated/0/plugins/sqldrivers/libqsqlite.so") needed or dlopened by "/data/app/com.horizon.polarislib-1/lib/arm64/libQt5Core.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.horizon.polarislib-1/lib/arm64:/data/app/com.horizon.polarislib-1/base.apk!/lib/arm64-v8a", permitted_paths="/data:/mnt/expand:/data/data/com.horizon.polarislib"]
                  

                  Can this error help?

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 4 Apr 2020, 18:50 last edited by SGaist 4 Apr 2020, 20:00
                    #10

                    Hi,

                    You can't put plugins anywhere you'd like. Qt follows a well defined structure and will search plugins in specific paths. You have to put the database related plugins under "plugins/sqldrivers".

                    Edit: while the plugins have specific subfolders, it seems deployment have them in different places. See here

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    M 1 Reply Last reply 4 Apr 2020, 19:24
                    0
                    • S SGaist
                      4 Apr 2020, 18:50

                      Hi,

                      You can't put plugins anywhere you'd like. Qt follows a well defined structure and will search plugins in specific paths. You have to put the database related plugins under "plugins/sqldrivers".

                      Edit: while the plugins have specific subfolders, it seems deployment have them in different places. See here

                      M Offline
                      M Offline
                      morteza ali ahmadi
                      wrote on 4 Apr 2020, 19:24 last edited by morteza ali ahmadi 4 Apr 2020, 19:25
                      #11

                      @SGaist Thanks, yes of course. I have put my libqsqlit.so in /mnt/sdcard/plugins/sqldrivers/ and added /mnt/sdcard/plugins/ in library path using:

                      QCoreApplication::addLibraryPath("/mnt/sdcard/plugins");
                      QApplication::addLibraryPath("/mnt/sdcard/plugins");
                      

                      But this lib-plugin can not be identified.

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on 4 Apr 2020, 19:43 last edited by
                        #12

                        Are you sure that this path can be accessed as is by your application ?

                        By the way, why use such an external path ?

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        M 1 Reply Last reply 4 Apr 2020, 19:52
                        0
                        • S SGaist
                          4 Apr 2020, 19:43

                          Are you sure that this path can be accessed as is by your application ?

                          By the way, why use such an external path ?

                          M Offline
                          M Offline
                          morteza ali ahmadi
                          wrote on 4 Apr 2020, 19:52 last edited by
                          #13

                          @SGaist

                          Are you sure that this path can be accessed as is by your application ?

                          I have set permission to storage and I can create, read and write a simple text file in this address.

                          By the way, why use such an external path ?

                          Because when I deploy my app with android studio, I can see all libs like libQt5Core.so and libqsqlite.so in a specific folder and the structure of .../plugins/sqldrivers/libqsqlite.so does not exist. So, I have copied libqsqlite.so to a folder in sdcard by this structure /plugins/sqldrivers/

                          1 Reply Last reply
                          0
                          • S Offline
                            S Offline
                            SGaist
                            Lifetime Qt Champion
                            wrote on 4 Apr 2020, 19:58 last edited by
                            #14

                            It has been brought to my attention that my memory may have failed me. See here.

                            One thing that you can do is build one of Qt's database example and then inspect the content of the archive generated to see what does mismatch with yours.

                            Interested in AI ? www.idiap.ch
                            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                            1 Reply Last reply
                            0
                            • M Offline
                              M Offline
                              morteza ali ahmadi
                              wrote on 5 Apr 2020, 06:32 last edited by
                              #15

                              I can solve the problem. First, I created folder sqldrivers including libqsqlite.so in the app directory (e.x. /data/user/0/com.example.polarislib) and I set permission by chmod 777 to sqldrivers folder and libqsqlite.so file and finally I used the following code in my source where the connection to Sqlite is needed:

                              QCoreApplication::addLibraryPath("/data/user/0/com.example.polarislib");
                              
                              1 Reply Last reply
                              0

                              11/15

                              4 Apr 2020, 19:24

                              • Login

                              • Login or register to search.
                              11 out of 15
                              • First post
                                11/15
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Search
                              • Get Qt Extensions
                              • Unsolved