How to use libusb for android at Qt Creatror.



  • Hallo!!

    I try to use libusb1.0 with android and qt creator.
    @Installing:

    If you wish to use libusb from native code in own Android application
    then you should add the following line to your Android.mk file:

    include $(PATH_TO_LIBUSB_SRC)/android/jni/libusb.mk

    You will then need to add the following lines to the build
    configuration for each native binary which uses libusb:

    LOCAL_C_INCLUDES += $(LIBUSB_ROOT_ABS)
    LOCAL_SHARED_LIBRARIES += libusb1.0

    The Android build system will then correctly include libusb in the
    application package (APK) file, provided ndk-build is invoked before
    the package is built.@

    This is the readme from libusb but i cannot understand what is Android.mk because if i create a project at Qt i dont have android.mk file. And where is "build configurations" at Qt creator ?

    Can someone help ?


  • Lifetime Qt Champion

    Hi,

    Android.mk is used in the Android NDK to build your application which is not the same thing as using Qt to build your project.

    You have to modify your pro file to link to libusb1.0.

    Something like:

    @
    LIBS += -L/path/to/android_NDK/folder/to/libusb.1.0_library
    -lusb1.0
    INCLUDEPATH += /path/to/android_NDK/folder/to/libusb.1.0_include(s)
    @



  • i think something its different,

    @ The libusb library, examples and tests can then be found in:
    "android/libs/$ARCH"

    Where $ARCH is one of:
    armeabi
    armeabi-v7a
    x86
    @

    in this path you have wrote i cannot find libraries, only in /home/unix/Downloads/libusb-master/android/libs there is libs. Are you mean that ?


  • Lifetime Qt Champion

    Indeed, adapt the paths to your system



  • i think that my previus post sounds stupid, i mean that in NDK folder i dont have the usb library, but i think in the libusb-master folder exist the library , i build it with the NDK builder. I will try to linking this folder and i will see if it's working.


  • Lifetime Qt Champion

    No it doesn't, the library doesn't necessarily need to be in the NDK tree.



  • @ LIBS += -L/home/unix/Downloads/libusb-master/android/libs/armeab
    -l libusb1.0.so
    INCLUDEPATH += /home/unix/Downloads/libusb-master/android/libs/armeabi @

    i have made this changes but i have also the following error

    @/home/unix/MyCODE/QT_Creator/src/librtlsdr.c:30: error: libusb.h: No such file or directory
    #include <libusb.h>@

    any ideas ?


  • Lifetime Qt Champion

    Where is libusb.h located ?



  • at

    /home/unix/Downloads/libusb-master/lib-usb

    but i am confused, i built the libraries for Android, need i the sourche or the compiled libs ?


  • Lifetime Qt Champion

    If you have it already built, just correct the INCLUDEPATH statement



  • @LIBS += -L/home/unix/Downloads/libusb-master/android/libs/armeabi
    -lusb1.0
    INCLUDEPATH += /home/unix/Downloads/libusb-master/android/libs/armeabi@

    i have now this path to libraries, this is the builded one libraries with NDK. But its interesting, where can i learn how to use other libraries ? Now the libusb is embedded in APK file ?
    Can you explain if the Qt creator can build from source the libs for Android or how can i use other C libraries in Android Apps ?


  • Lifetime Qt Champion

    Qt Creator is an IDE, it can't build "any and every project". Depending on the library you'd like to use with android, you'll have to build them either using the library provided scripts or adapt it yourself.

    As for integrating other libraries, it's the same process you did for libusb



  • That means that i have two choices, i can use the source code of a library direct into the project or to use a link to builded shared object ?

    am i right ?


  • Lifetime Qt Champion

    You can't always just include the source code of a library in your project. Some of them requires configuration to e.g. enable functionalities based on your system's installed libraries etc.



  • i mean only for android because it's an external device and not my system. i think need to port the source code for Android or not ?


  • Lifetime Qt Champion

    That depends on the library and what it does



  • Hello, I was trying to do exactly the same but I am having some problem following this indications. Right now I have

    LIBS += -L/home/toad/libusb-1.0.19/android/libs/armeabi-v7a -libusb1.0.so
    INCLUDEPATH += /home/toad/libusb-1.0.19/android/libs/armeabi-v7a
    

    and in the .cpp file I want to use the libarry I have

    #include <libusb.h>

    also tried

    #include "/home/esaote/libusb-1.0.19/android/libs/armeabi-v7a/libusb1.0.so"

    but it keeps on giving the error: undefined reference to 'libusb_whatever'

    What am I doing wrong?



  • LIBS += -L/home/unix/Downloads/libusb-master/android/libs/armeabi-v7a\
    -lusb1.0

    this working for me , very important this slash,
    -L/home/unix/Downloads/libusb-master/android/libs/armeabi-v7a\ <==== ()



  • without any include on the .cpp file?



  • only in .h file #include <libusb.h> and of course your INCLUDEPATH += /home/toad/
    but not to lib, you need to point the source files from libusb , like this
    INCLUDEPATH += /home/unix/Downloads/libusb-master/libusb



  • Now I am exactly here:

    [quote author="xmaze" date="1417649349"]@ LIBS += -L/home/unix/Downloads/libusb-master/android/libs/armeab
    -l libusb1.0.so
    INCLUDEPATH += /home/unix/Downloads/libusb-master/android/libs/armeabi @

    i have made this changes but i have also the following error

    @/home/unix/MyCODE/QT_Creator/src/librtlsdr.c:30: error: libusb.h: No such file or directory
    #include <libusb.h>@

    any ideas ?[/quote]

    my libusb.h is in:
    /home/toad/libusb-1.0.19/libusb/libusb.h

    and in the .pro file I have
    INCLUDEPATH += /home/toad/libusb-1.0.19/libusb

    and in the .h I've tried both:
    #include "/home/esaote/libusb-1.0.19/libusb/libusb.h"
    #include <libusb.h>



  • the error has my path, are u sure that you changed ur path?



  • Right now I have in the .pro file:

    @
    LIBS += -L/home/toad/libusb-1.0.19/android/libs/armeabi-v7a
    -lusb1.0

    INCLUDEPATH += /home/toad/libusb-1.0.19/android/libs/armeabi-v7a\
    
    INCLUDEPATH += /home/toad/libusb-1.0.19/libusb\
    

    @

    If I am not wrong this looks pretty much like your final .pro file but adding the final line, this final line is the one we agreed I should write in order to be able to do in de .h file:

    @
    #include <libusb.h>
    @

    And with this (I am pretty much 100% the paths are correct, QT even autocompletes for me the include) it keeps on giving me the error:

    libusb.h: No such file or directory
    

    on the other hand I don't understand either why I should include it I already made the ndk-make to build it in the libusb1.0.so that I am including in the .pro file


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.