Skip to content

Mobile and Embedded

The forum for developing everything embedded: Linux, WinCE, Symbian, MeeGo... you name it.
14.3k Topics 63.1k Posts
Qt 6.11 is out! See what's new in the release blog
  • Integrating Apple Swift libraries into a mobile app

    Unsolved
    3
    0 Votes
    3 Posts
    54 Views
    SGaistS
    Otherwise this thread might be relevant.
  • can we use Qt lgpl in android and ios ?

    Unsolved
    6
    0 Votes
    6 Posts
    1k Views
    SGaistS
    WARNING: I am NOT a lawyer. Technically, static builds are allowed with LGPL but you have to provide the build artifacts so other people can redo the linking with their own static version of the library. That's the very tricky part.
  • Question about Qt LGPL license for Android & iOS

    Unsolved
    3
    0 Votes
    3 Posts
    2k Views
    A
    Reviving this because the answer here, that iOS is incompatible with the LGPL because the build is static, was true in 2017 but may no longer be. Qt 6.10.3 can be built for iOS as dynamic frameworks, and we have a working prototype of a closed-source app with Qt linked dynamically: it runs on the arm64 simulator and links for devices. That's the same shared-library route the original question asked about. In short: configure -shared -xplatform macx-ios-clang works in 6.10.3 (6.3.2 still refused it). Core, Gui, Widgets, Xml and Svg come out as @rpath frameworks. The one part Qt still forces static is the iOS platform plugin, qios, because it calls the app's main(). Our Qt code draws nothing, so it runs on the minimal platform plugin instead. The App Store rejects loose dylibs, and Qt only looks for plugins as loose files. So the two plugins we need are relinked as framework dylibs and registered with qRegisterStaticPluginFunction after dlopen. The app ends up with only frameworks, and no Qt code in its own binary. Since App Store copies are signed and encrypted, users would get an unsigned .app per release in which to replace Qt and re-sign. @sierdzio , or anyone from The Qt Company reading this: does the "iOS is incompatible with LGPL because it's static" position still hold now that a shared build is possible? And has anyone shipped an App Store app this way, and did validation accept Qt as embedded frameworks?
  • Setting up Android SDK for Qt Creator on Linux

    Solved
    3
    0 Votes
    3 Posts
    316 Views
    R
    Qt Creator 20.0.2 fixed the problem.
  • Can QML make a digital chalkboard feel like real chalk on a ₹6,000 Android tablet?

    Unsolved
    2
    0 Votes
    2 Posts
    98 Views
    Ronel_qtmasterR
    @taniya-mittal yes you can, this is an exemple https://github.com/jordanprog86/QML-Chalkboard.git
  • This topic is deleted!

    Unsolved
    1
    0 Votes
    1 Posts
    10 Views
    No one has replied
  • Project images and icons

    Unsolved
    8
    0 Votes
    8 Posts
    619 Views
    SGaistS
    Nice you found a solution. What were you using before Vulcan ?
  • 0 Votes
    11 Posts
    5k Views
    ekkescornerE
    verified wit QtCreator 20.0.2 snapshot https://download.qt.io/snapshots/qtcreator/20.0/20.0.2/664/ - it’s working now :)
  • Android API and SDK version for maximising population of users. Which to choose?

    Unsolved
    6
    0 Votes
    6 Posts
    429 Views
    SGaistS
    @bogong said in Android API and SDK version for maximising population of users. Which to choose?: @SGaist AppStore for Android applications??? It was meant as the Google application store hence shortened to "App Store" which name is Google Play and not the same as Apple's own AppStore.
  • This topic is deleted!

    Unsolved
    1
    0 Votes
    1 Posts
    15 Views
    No one has replied
  • Qt6.8.3 Android QComboBox issue

    Unsolved
    6
    0 Votes
    6 Posts
    2k Views
    stasiozS
    @stasioz said in Qt6.8.3 Android QComboBox issue: @SGaist I am using Qt 6.8.2 on debian 13. @SGaist and emulator "system-images;android-28;google_apis_playstore;x86_64". I haven't tried on a real device though. I did use Qt 6.11.1 at one time compiled from source. I tried it out on an emulator level 28 and wasn't able to click on or select on the combo box. I didn't try on real device either. All apk above are Debug build. JDK 21 NDK 27.2.12479018 Gradle 8.10 All good. QML is fun and quicker similar to MVC pattern.
  • Custom Camera on Android

    Unsolved
    3
    0 Votes
    3 Posts
    346 Views
    Ronel_qtmasterR
    @Andy314 solution one is the right answer but you're missing few things. You should not process the camera streams on the main thread, you need to create another thread for gettig the camera frames and sending them to the Ui Moreover, after getting the camera frame and display it, you should free the memory space consumed by it. otherwise it will be slower and take too much ram
  • Why does we have problem with gradle? Do you have?

    Unsolved
    4
    0 Votes
    4 Posts
    436 Views
    Nils SjobergN
    ./gradlew clean build --refresh-dependencies
  • This topic is deleted!

    Unsolved
    1
    0 Votes
    1 Posts
    9 Views
    No one has replied
  • 0 Votes
    3 Posts
    296 Views
    B
    @Nils-Sjoberg Thx a lot. Will try it today.
  • 0 Votes
    3 Posts
    327 Views
    T
    @Nils-Sjoberg Thanks for the suggestion! I tested with: OPENSSL_armcap=0 Unfortunately, it doesn't change the behaviour. The application still crashes on the Raspberry Pi 3, so it doesn't appear to be an OpenSSL CPU capability detection issue. However, I have an interesting update that may help narrow down the problem. Originally, my WebEngineProfile was configured like this: property string tmpDir: session.getPlatform() == "windows" ? "C:/Temp/xx" : "/tmp" WebEngineProfile { offTheRecord: false persistentStoragePath: tmpDir + "/xx-webengine-" + content.uuid() cachePath: tmpDir + "/xx-webcache-" + content.uuid() } So every WebEngineView was using a profile stored under /tmp, with a directory name based on content.uuid(). I then changed only the profile/cache location to a persistent directory under the user's home instead of /tmp, for example: persistentStoragePath: "/home/xx/.local/share/xx/NeoPlayer/WebEngine/profile" cachePath: "/home/xx/.local/share/xx/NeoPlayer/WebEngine/cache" (or an equivalent persistent location). Since this change: the application progresses much further during startup, several crashes no longer occur, the remaining crash is now consistently inside QtWebEngineCore, typically in a thread named CacheThread_Blo, with a backtrace ending in malloc() / operator new() inside libQt5WebEngineCore.so. In other words, changing only persistentStoragePath and cachePath significantly changes the failure mode. What puzzles me is that the original code works perfectly on a Raspberry Pi 5, while it crashes on the Raspberry Pi 3. Some additional comparison between the two systems: Both run Debian 13 (Trixie). /tmp is a tmpfs on both systems. Both use the same application source code. Both are built from the same Qt 5.15.17 build system (with architecture-specific binaries). The Raspberry Pi 5 runs AArch64 (64-bit), while the Raspberry Pi 3 runs ARMv7 (32-bit). This makes me wonder whether the issue is not /tmp itself, but rather how QtWebEngine/Chromium initializes and manages a WebEngineProfile on 32-bit ARM. Changing the profile location seems to alter the internal initialization sequence enough that the crash either disappears or occurs much later during startup. Am I overlooking something about how WebEngineProfile is expected to be used? In particular: Is storing a WebEngineProfile under /tmp considered bad practice or unsupported? Is creating profile directories dynamically using content.uuid() likely to expose issues or race conditions inside QtWebEngine? Would you instead recommend creating a single long-lived WebEngineProfile and reusing it across all WebEngineView instances? Has anyone seen similar behaviour where changing only persistentStoragePath or cachePath changes or eliminates crashes in QtWebEngine? If there are other diagnostics that would help identify the root cause, I'd be happy to run them and share the results.
  • Without native code, how to get iOS and Android device id?

    Unsolved
    2
    0 Votes
    2 Posts
    250 Views
    Nils SjobergN
    Write a small native JNI layer for Android, Objective-C++ for iOS to access Android ID / identifierForVendor, because QSysInfo::machineUniqueId() is not implemented on mobile platforms in Qt
  • 0 Votes
    4 Posts
    406 Views
    SGaistS
    Nice, thanks !
  • Using RevenueCat with Qt 6 ios/android applications. How?

    Unsolved
    2
    0 Votes
    2 Posts
    246 Views
    Nils SjobergN
    There is no official Qt module for RevenueCat, so you need to write a bridge layer yourself - Objective-C++ for iOS and JNI for Android - that connects the native SDK to the C++/QML code, or alternatively check if QtPurchasing (the old built-in module) is sufficient for your needs.
  • Programatically iterate over public Files in Android

    Unsolved android file permissions
    6
    0 Votes
    6 Posts
    680 Views
    B
    Will next look into: https://www.qt.io/blog/qt-for-android-storage-updates