Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Min Example to include Qt in Android project
Qt 6.11 is out! See what's new in the release blog

Min Example to include Qt in Android project

Scheduled Pinned Locked Moved Mobile and Embedded
1 Posts 1 Posters 1.1k Views 1 Watching
  • 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.
  • J Offline
    J Offline
    jtrex1337
    wrote on last edited by
    #1

    Hey all,

    This is probably simple for someone with better build experience than I have.

    I'm trying to use some of the Qt libraries via NDK and JNI. I want to have a "standard" Android project (not qt/qt creator based) and just include some of the c++ libs.

    I've successfully built Qt for armeabi-v7a, but can't figure out how to setup the build environment correctly so I can include a Qt lib from C++.

    In particular, I have libQt5Core.so built and can be loaded via system.loadlibrary at runtime from Java.

    However, I simply want to be able to successfully include a Qt lib from the c++ context, like:

    #include <QDataStream>

    However, when I do this I get this from ndk-build:

    "fatal error: QDataStream: No such file or directory"

    I've tinkered around a bunch with my Android.mk, but this is what I currently have that works to build and load from java, just not C++ NDK/JNI libs I try to create:
    @
    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    #list of dependent 3rd party or external libraries are included in the LOCAL_SHARED_LIBRARY variable
    LOCAL_SHARED_LIBRARIES := $(foreach module,$(QT_LIBS),Qt5$(module))
    QT_MODULES:= Core Concurrent Network Gui Sql Widgets Xml
    QT_LIBS:=$(QT_MODULES)

    #list of dependent system libraries
    LOCAL_LDLIBS += -fPIC -llog -ldl -lm -lz -lm -lc -Wl,-rpath,'libs/armeabi-v7a'
    LOCAL_LDLIBS += -L$(LOCAL_PATH)/../libs/armeabi -llog -Llibs/armeabi-v7a/ -Llibs/armeabi2 $(foreach module,$(QT_LIBS),-lQt5$(module))

    #name of the library to be build
    LOCAL_MODULE := TestLib
    #list of source files to be build as part of the library
    LOCAL_SRC_FILES := TestLib/test.cpp

    #include path for header files for C and C++ applications
    LOCAL_C_INCLUDES += /usr/local/include /Users/jtrex/Qt5.1.1/5.1.1/android_armv7/include
    LOCAL_CPP_INCLUDES += /usr/local/include /Users/jtrex/Qt5.1.1/5.1.1/android_armv7/include
    #The compilation flags for C/C++ applications
    LOCAL_CPPFLAGS += -DHAVE_NEON -fPIC -DANDROID -I/Users/jtrex/Qt5.1.1/5.1.1/android_armv7/include
    LOCAL_CFLAGS += -DHAVE_NEON -fPIC -DANDROID -I/Users/jtrex/Qt5.1.1/5.1.1/android_armv7/include
    LOCAL_CPP_FEATURES += exceptions

    include $(BUILD_SHARED_LIBRARY)

    include $(CLEAR_VARS)
    QT_MODULES2:= Core Concurrent Network Gui Sql Widgets Xml
    QT_LIBS2:=$(QT_MODULES2)
    QT_LIB_SUFFIX:=so
    QT_LIB_TYPE:=SHARED

    define add_qt_module1
    include $(CLEAR_VARS)
    LOCAL_PATH := libs/armeabi2
    LOCAL_MODULE:=Qt_$1
    LOCAL_SRC_FILES:=libQt5$1.$(QT_LIB_SUFFIX)
    include $(PREBUILT_$(QT_LIB_TYPE)_LIBRARY)
    endef

    $(foreach module,$(QT_LIBS2),$(eval $(call add_qt_module1,$(module))))
    @
    Thanks a bunch!

    1 Reply Last reply
    0

    • Login

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