When Qt 5.4 Community edition targets Android or iOS is it static linking to Qt by default?



  • Question: When I build a Qt widgets app targeting Android or iOS using Qt 5.4 Community edition, am I static linking my executable with Qt libraries?

    My understanding is I must purchase "Indie Mobile" or better if I statically link with Qt and if I wish to keep my source code proprietary. Only Qt commercial editions can statically linked to Qt libraries and keep your source code proprietary.

    Is the issue that Google Play and iTunes app stores do not want an application that was approved for a legitimate store-approved-purpose, to download and replace a dynamic link library to change it's behavior into something that may not be allowed? Or perhaps even malicious?

    Thanks in advance for any comments that may help me better understand this.

    -Ed

    "Qt Download link":http://www.qt.io/download/


  • Lifetime Qt Champion

    Hi,

    Android: No
    iOS: Yes -> Apple rules and there are a lot of others that restricts what you can and can't do.

    AFAIK, yes if you want both (WARNING: I Am Not A Lawyer) Check with the adequate person.



  • Hi,

    You may find "this page":http://www.qt.io/qt-licensing-terms/ useful.



  • Thanks guys.

    Qml / Qt Quick seems to be the approved Qt technology for Android and iOS.

    However Qt also seems to be pushing mobile developers to pay for commercial Qt. As evidence of this, the Qt Quick Compiler is only available to commercial licenses.

    I need to support Android, iOS, OS X, Linux, and Windows. Qt Professional is $4788 US dollars per year. If Qt requires a second license for my build machine, then $9576 per year for a one developer team; just me and my build machine.

    I think it makes more sense to switch to Xamarin which gets me all platforms for $999 / year, a substantial savings compared to Qt.

    I am currently using Qt widgets. Qml / Qt Quick is very different. Qt Quick will require much porting and effort to learn and become comfortable with. With Xamarin I will be programming in C# which I am already competent in and is a much more familiar programming environment than Qml.

    Or I stick with Qt and continue using Qt widgets technology:

    • Purchase Qt Professional Multi-Mobile for static link closed-source apps for Android and iOS at $149 / month or $1788 per year.
    • Continue to use Qt Community edition for dynamic linked closed-source apps for OS X, Linux, and Windows

    In this latter case I am gambling on Qt's future plans not pushing me into needing Qt Professional for desktops. When Qt Professional is required for both mobile and desktops then Qt is no longer an affordable development environment for closed-source commercial development

    I guess no one ever said cross-platform support was easy. ;-)

    -Ed



  • You don't need the Professional license for the desktop unless you want to statically link to Qt. Yes, you won't have Qt Quick Compiler and the commercial add-ons on desktop but it is a trade-off that may be acceptable for you.



  • Thank you for your input.

    As of today with Qt 5.4 I think you are right and I can use the Qt Community edition for closed-source desktop development as long as I do not static link with Qt.

    I also assume I can make no modifications to the Qt source code. If I do I understand I must release my source code as well as any Qt source code changes.

    I downloaded Xamarin. I was excited to try it, then I came to the understanding that your app looks native because it is native, and you are the one that has to write the native user interface.

    I suppose Xamarin might still be worth it if their framework had support for Bluetooth and camera on all platforms. Qt Bluetooth supports Linux/Android yet I will have to develop my own Bluetooth support for iOS, Windows, and OS X.

    Nothing new I suppose. Cross-platform development will always be a trade-off.

    Thanks,

    -Ed


Log in to reply
 

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