Yeah, we should. In the meantime: Lazarus
How mature is Qt for Android project presently? Can one use the latest release of Qt, and for example Qt Quick with it? The reluctance of Nokia to port Qt to other mobile platforms can be probably explained by their market interests, but this really hurts Qt as a cross platform library.
Please point another toolkit similar to Qt that is available for as many platforms (both hardware and software wise) as Qt.
While other toolkits are available for one or two platforms, I don't think it "hurts" Qt to be available for 31 and not 32 (arbitrary numbers) under very generous (in my opinion sometimes too generous) licences. Qt is open source with open contribution model, nobody stops anyone to help port Qt to any platform one sees fit, including the ones Nokia is not currently working on. Android and iPhone is one thing but we have seen the focus turning away from desktop platforms too and somebody should fill this void either with direct contributions to Qt or through 3rd party additions.
I don't think that anyone reading/writing this forum denies the value of Qt as a great cross-platform C++ toolkit. The issue is that Android is becoming a major player in desktop OS marketplace, in addition to it's position in mobile market. I personally believe that NokiaQt is set to loose big time if they are not going to support Android "officially". I doubt that the efforts of the open-source community will be sufficient to create and support Qt port to Android, but I'll be happy to be wrong.
It will take some serious development to run Qt on the Android platform. If your going to do it, you need to do it right, which means keeping the look and feel of applications to those that use the native UI kit. This gives you some restrictions also. It's not just a simple porting project, but something that needs to be carefully planned and implemented if it were to be an official version of Qt.
I don't think Nokia at the moment are willing to invest this amount of time, and I also think that they don't want to tread on other peoples toes (eg. Google), which is why also Qt does not exist officially for iPhone.
One of the major problems with mobile development presently - is a horrible fragmentation. It's very hard to write a decent application in a cross platform manner (unless one limits it to HTML/JavaScript and some other Web technologies with something like Rhodes mobile or JqueryMobile). One is basically forced to rewrite it for each platform independently, which hugely duplicates the effort.
Qt could really be a big help here, if it would allow real cross platform development. Come on, Android and iOS are major players, saying 31+ platforms but without Android and iOS really greatly diminishes the value of Qt for mobile development (for desktop it's unquestionably the great solution). On the other hand, Qt for Android project looks pretty active, as well as Qt for iPhone. I was just asking if anyone here evaluated how mature they are.
About treading on someone's toes - it's a political issue. Real open source projects should not be tainted with politics (alas, it's rarely the case). Using Qt on Android or iOS will not decrease the number of apps for these OSes. If something it will only increase them. However corporations are preoccupied with controlling the market through development tools, but development tools IMHO should be neutral.
Last edited by shmerl; 27th September 2010 at 20:51.
Sure, iOS is a mjor player, but it also has major licensing. It's a question whether or not apple would even allow you to use Qt in your own application without approving it (and they would have to approve each and every version, no doubt) as they used to (don't know if they still do) have a ban on libraries which duplicated functionality already in the iOS (basically, you were expected to use the builtin UI libraries).
Heck, I remember when Apple clearly stated "If it isn't written in Object C, it will not be approved for the App store.", and "If your application is capable of browsing the web, it must use the iOS WebKit framework and no other", and don't forget about the rule that states you application may not interpret or compile code locally, so goodbye QtScript.
I'm not sure of that (I only heard about it) but I think you can't deploy any third party libraries on the fruit company devices.
You probably heard, that Apple recently relaxed their SDK agreement, (probably out of concern regarding antitrust investigations). So some major blockers were removed. (There is still a limitation on Apple WebKit for downloaded scripts, but not for local anymore, so QtScript should be legit. Of course in the end it's up to their store approval to decide, but we are talking about legal concerns of using their SDK, not about approval itself. I.e. it may be legal, but not approved, for example because of some side reasons. In such cases one can use Cydia app store for example, etc.
Here is an example of what they changed:
OLD:
NEW:3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.
I don't think I saw this mentioned but qt will be on meego. As someone else said Nokia is competing with android. I think Nokia said they wont release an android handset. Also it would be more of google's job to support qt on androd.
They are just afraid of losing control of there own platforms. For example, some other company comes along, establishes a de facto standard cross-platform software platform on top of the original manufacturers own. Everyone starts using it. Then it's upto the cross-platform-sdk manufacturer company to keep that cross-platform sdk up to date, so in effect, they are now controlling what developers use.
There is an alternative to porting Qt to iOS and Android - port them to Qt. To clarify, if Qt contained abstraction veneers and perhaps a bit of help from moc (or a new preprocessor) to provide substantial iOS and Android support in generic code then when you intend to write a portable mobile app you make an effort to use those veneers and preprocessor functions and a small subset of "proper" Qt. On a desktop system, those veneers just translate to the "proper" underlying Qt classes, but on mobile devices they translate to suitable iOS and Android calls. Veneer source-code suitable for use in the iOS and Android SDK would be provided for inclusion in ports to those systems.
You would not be able to just cross-compile to another platform (partly because of language incompatibilities, device differences, and licensing restrictions) but hopefully the porting and maintenance effort might be reduced to mostly cut-and-paste and minor patching. I know it's not ideal, but considering the difficulty of providing the alternatives might it not be a possibility?
I think all platforms which have NDK potentially allow a Qt port. Since unfortunately Nokia has its own internal restrictions, it's up to community to generate enough interest for ports to happen. (It would be really great if Qt would be managed by an independent neutral foundation, but hey, Nokia already did a great thing - opened Qt under LGPL in the first place, which is already a lot).
There is Necessitas suite for dev. to Android:
Hello,
After I've downloaded Android SDK and Android NDK and I've created AVD Android 2.2 API level 8
and I've installed Necessitas tool for building and deploying Qt applications to Android OS I've assigned Android NDK toolchain version as arm-linux-androiddeaby-4.4.3
I've putted Qt version and Android SDK and NDK versions in Qt Creator options I've got android directory with shell java files created as in the videos only when launching as root.
But the problem is when I build Qt project ( with android directory created in project folder's root ) I get following error both on root and user login:
Assembler messages:
Fatal error: Invalid -march= option: `armv5te'
in main.o
Does anybody know why that message ( error ) ? What is the problem? Why it can't be built?
Thank you very much. I will try to help here too.
Bookmarks