Qt Quick vs Flutter
-
@tomy the way from Qt 5 / QML2 to Qt 6 / QML3 will be a step-by-step process
Qt 6.0 is planned for Nov 2020 - I expect End of 2020 or first quarter 2021 ;-)
about Qt 6: https://www.qt.io/blog/2019/08/07/technical-vision-qt-6the process starts with Qt 5.15
many new things will be backported to 5.15
there will also be help from QtCreator to see what will be deprecated in Qt 6 / QML 3
hopefully this will work smootha first blog about new ways to go with QML in 5.15: https://www.qt.io/blog/qml-type-registration-in-qt-5.15
I'll try to follow this process and blog about and report issues to help Qt
have no idea how much work this will be and how easy / diffcult it will be to transform apps to Qt6 / QML3I have created some very complex apps and I know most of my own project rules won't work anymore
some years ago I started with Qt as a newbie - this was the time where first Betas of QtQuickControls2 came out.
I tried to use them, tested, blogged, requested features, added issues, ... - this was much work, but I got many of my issues/requests solved, so it was worth spending the time and motivates me to do the same with Qt6 QML3 for mobile apps -
@tomy I had a good experience with Qt for my first Android project, but I wouldn't use it again, primarily because of the licencing issue and I don't like the direction Qt is heading (all new modules are GPL instead of LGPL). And lately it seems the Qt Company doesn't care about mobile platforms.
When I started, there weren't many other cross-platform options. But now we have Flutter, React Native, and NativeScript, among others. I looked at Flutter and didn't like it. I don't like Dart and I don't like their UI markup. QML is the best UI markup language by far, IMO, and I will miss it.
Another consideration for me back then was that I needed OpenGL. I don't know if Flutter et al support 3D yet, so if I need 3D again I'll probably use a game engine like Godot.
But for my next 2D project I'm going to look at NativeScript. I guess now would be a good time to do that while I'm #SocialDistancing
-
@Tom_H you know that there will be a new startup / small biz offering coming for $499/year ?
-
@ekkescorner I did not know that. Good to know. I just got done reading the article you posted about Qt 6. Interesting read.
-
I've been working with Flatter/Dart and this is explanation of my experience:
-
Flatter is not the solution itself. It's only framework on Dart.
-
The Dart VM - is SUPER slow. Here the benchmark https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/dart-java.html There are fundamental issue in threads. The manner of threads - the reason of why it's so slow. There are not about percents, there are about times.
-
Extremely difficult in reality to add something native. You should be creating extensions to Dart VM on C++ In case of very restricted functionality for now - it's might be HUGE problem. (One question - if you need to add something on C++ to Dart, why Dart?) For now I would say - no any cross-platform 100% covering native. For me extremely important to be able to add native without troubles. Dart - is nothing about "without trouble".
-
SUPER poor community, a lot of noobs that will be copy-pasting official doc. Sometimes to find solution beside standard reference almost impossible or will get HUGE amount of time.
My own opinion: if you going to develop something very simple - Dart - might be solution, it's fast in developing and "idiot friendly" (BTW - if you look carefully on Dart itself, you might be seeing total paradigm compatibility to QML). The advantage of Flatter/Dart - very good implementation to Google services, it's in box from begin. If you going to develop something that require a little more then just getting JSON from server - definitely NO Dart at all. The promo of being "super fast UI" - is only if you using their precompiled UI components. In other case - super slow.
All of it my own experience of developing cross-platform applications. I've started cross-platform before mobile development based on Chromium Embedded https://en.wikipedia.org/wiki/Chromium_Embedded_Framework in 2012. We've been developing application based on WebUI for Windows and Linux. After it iOS native developing since iPhone 4, and now only Qt and sometimes native.
-
-
@tomy the new 'Small Business License' will help to make the right decision: https://www.qt.io/blog/available-now-qt-for-small-businesses
now up to 250K $ revenue - only 499$ p.a. -- embedded, mobile, desktop -- up to 4 devs -
I use Qt for Android on Play Store. I usually use JavaScript to develop QML apps. I had to search for an alternative for these reasons;
- The most important reason, app size is too much. Hello World QML app takes more than 40 MB on Android, APK size is 13 MB+. Qt copies all QML modules to APK's assets folder and it also copies some unused libraries to libs folder. This increases APK size.
- Basic things like updating, editing, saving a dynamic list model in QML-JS are tedious for me.
- Learning c++ with Qt takes time :)
- There is not officially mobile advertising platform support (I use an open source project for Qt and Admob)
- QML development is too slow. QML 1.0 made Nokia N9's (2011) component seems more advanced than QQC2 Material component
- License for commercial is very expensive for me.
I try to learn Flutter with an Udemy course. Flutter has more native looking interface compared to React Native and Native Script. Flutter has less app size compared to QML apps. It can also be developed for Web. Qt's Web Assembly is too slow compared to Flutter Web. Its license is more free than Qt so I can have commercial apps. I think Dart libraries will increase in the near future.
Qt supports c++ and many Javascript libraries. This makes it easy to develop complex apps with Qt. I will continue to develop my complex projects with Qt. I have simple QML apps that are almost 90MB on Play Store. I think to convert them to Flutter in order to reduce app size. I think to use Flutter for simple apps for now. -
Hello World QML app takes more than 40 MB on Android
There might be a problem, say, building the app using "Debug", with the case, otherwise it shouldn't be that much for such a trivial app.
I have a good but basic game (2D) created using QtQuick with many features like, images, sounds, DB and other items working very good on all android devices. It's only 21MB. :) -
It was working before signing. After signing I get the error :D
Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/apksigner/ApkSignerTool has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:757) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) at java.net.URLClassLoader.access$100(URLClassLoader.java:74). at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:419) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) at java.lang.ClassLoader.loadClass(ClassLoader.java:352) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495) apksigner command failed.
When I don't use Qt for a few months I get this kind of weird errors :) But as you said after signing, APK size reduced to 9.9 MB.
Edit: After uninstalling Android SDK Build Tools 30 rc2 version, it worked. -
Thanks for suggestion @Tom_H I also use it and I use banner ads. It was working 2 months ago all the time. But It recently doesn't work on my phone. Also banner of my Qt apps didn't work for other people's device in my country. As far as I see from the impressions, it works other countries. Maybe it is because of there is no suitable ad to display. Test ads work properly.
Edit: The ads are working now . -
@tomy said in Qt Quick vs Flutter:
Hello all,
Why do you think Qt Quick is better than Flutter for Android and iOS apps? What are the advantages and disadvantages of Qt Quick over Flutter for that area, please? How about apps for embedded devices by the two? Recently I needed to develop sports software for myself, I came across a post by https://www.cogniteq.com/blog/how-wearable-technology-changing-sports-industry company and they develop mainly in Flutter and their applications look great.
I did a research on the Web for the case but couldn't find a comprehensive and good answer.
Thanks beforehand.
When comparing Qt Quick and Flutter app development for Android and iOS, it is important to consider the various factors that can affect the success of your project. Here are a few key points to consider:
Benefits of Qt Quick apps for Android and iOS:
Cross-Platform Compatibility: Qt Quick allows you to write code once and deploy it across multiple platforms, including Android and iOS, reducing development time and effort.
Own performance. Qt Quick apps can achieve near-native performance on Android and iOS devices, delivering a smooth and fast user response.
Mature Ecosystem: Qt has been around for a long time and has a mature ecosystem with extensive documentation, extensive libraries, and strong community support.
C++ integration: Qt Quick provides seamless integration with C++ code, allowing developers to use existing libraries and tools to extend functionality.
Custom UI Design: Qt Quick provides powerful tools for designing user interfaces with smooth animations, transitions and effects to create visually appealing applications.
Disadvantages of Qt Quick apps for Android and iOS:Steeper learning curve: Qt Quick may have a steeper learning curve compared to Flutter, especially for developers who are not familiar with the Qt framework or C++ programming.
Less extensive widget library. Although Qt Quick offers a number of UI components and controls, its widget library may not be as extensive as Flutter, which may limit the design options for some projects.
Platform-specific considerations. Despite its cross-platform capabilities, Qt Quick may still require platform-specific adjustments and optimizations to ensure optimal performance and usability on Android and iOS devices.
For embedded devicesQt Quick has been widely used for developing applications for embedded devices due to its small size, efficient performance, and support for hardware-accelerated graphics. It provides a robust foundation for building user interfaces for a variety of embedded platforms, including IoT devices, smart devices, in-vehicle infotainment systems, and more.
In conclusion, while both Qt Quick and Flutter offer powerful tools for developing cross-platform applications, the choice between them depends on your project's specific requirements, technical knowledge and preferences. It's important to carefully evaluate the strengths and weaknesses of each platform to determine which one best suits your needs.
-