Important: Please read the Qt Code of Conduct -

Use the open-source version of Qt in an iOS app ?

  • Hello,

    I have been googling a lot, and I am still a bit confused. The short version: it is possible to use the open-source version of Qt to publish a commercial application (closed source) on the AppStore for iOS ?
    The longer version: it seems that Apple forbids dynamic linking and that my app will be rejected when I publish it, is that correct ? For the moment, it seems that the default behavior is to link statically with the Qt libraries, so I would need to find a way to tune my pro file to embed Qt frameworks instead. But if at the end it gets rejected anyway...

    Thanks !

  • For instance, I found this here, which is not clear at all:
    On iOS it is possible to use a dynamically linked version of the Qt libraries, and have them bundled with the application. This allows the app to use the LGPL license for Qt whilst allowing the app itself to be closed source. It remains to be seen whether Apple will accept applications that bundle dylibs into the iOS App Store. If Apple does not accept applications that use bundled dylibs into the App Store, then it will be necessary to link Qt statically to the application. And as the Qt for iOS port uses the LGPL version of Qt, the rules for statically linking with LGPL will kick in - this can be a problem for closed source apps.

    I am really surprised that the wiki does not give a clear answer, iOS support is not all that new, right ?

  • IANAL!

    But some opinion anyway:

    On the wikipedia page of the LGPL it summarizes the situation as:

    Essentially, if it is a "work that uses the library", then it must be possible for the software to be linked with a newer version of the LGPL-covered program.
    The most commonly used method for doing so is to use "a suitable shared library mechanism for linking".

    But that "most commonly used method" being shared/dynamic-linked libraries only really provides actual requirement (possible to relink) if your closed-source app is also available in a form that someone can change the libs... which means something more than a digitally signed artefact on the appstore where it's not possible to substitute new files without breaking the app. So you'd have to make the closed source part of your app available in a form which could be relinked and signed by the re-linkers certificates and so on. At this point you're into the same sort of territory as people who'll tell you you can static link with LGPL stuff so long as you make your object files available too so people can relink it with their own version of the libs (maybe it's possible in theory, I've never come across anyone actually claiming to do it for real though; I'm sure I've seen this suggested as a way of doing closed-source Qt apps on iOS in the past too, come to think of it).

    Like I said though: IANAL.

  • Qt Champions 2016

    @timday that's exactly as I understood it. Same is for Android: Ministro service cannot be used for Android 5+ apps. so the solution is to provide the APK and a description for users HowTo unzip, replace libs, resign. As you said: I never heard that someone did this: replacing libs in a mobile app. but to fullfill license requirements user must be able to do this. - No idea HowTo solve this for iOS apps.

Log in to reply