Qt SDK on Android ARM device?



  • I wonder if there is any development towards bringing the Qt SDK to Android ARM devices? I don't mean develop applications FOR Android but ON Android.

    I am aware currently tablets are mostly useless toys designed to make money on people rather than making money for people. However, recent iterations of the ARM architecture have gotten powerful enough to be useful, and with the dreaded and bloated x86 architecture it seems ARM devices will only keep gaining momentum. In just 2 watts the recent AMR processors bring about the same performance as a 20 watt x86 processor, and that is nothing to sneeze at.

    Also - currently there are no development tools for ARM mobile platforms - which means a whole market area with virtually no competition, there for the taking, and that too is nothing to sneeze at.

    I was looking into Linux on ARM devices, but since Linux is not commercial, it seems no one really pays much attention to it. There is a power consumption bug that appeared in kernel 2.6.38 IIRC and as of today there is no indication it will be resolved anytime soon, causing Linux to waste about 20% more power, and combined with poor driver support this simply makes it less attractive, although I'd prefer Linux over Android any day.

    I myself dislike the "Java" development Google decided to enforce upon Android developers, it is bloated, slow and inefficient, and the few benefits it has over C++ development are simply not worth it. I am aware Google and Nokia are competitors, and by no means my post is about getting in bed with Google, it is more about competing on their own turf / beating them at their own game. IMO the Android SDK stands no chance against Qt / C++ / QML in terms of efficiency and performance. And on mobile platforms limited by processing speed and memory size efficiency is as crucial as it is in the enterprise market. Not to mention the cross-platformability of Qt - Windows, Mac and Linux are already supported and thanks to the Lighthouse project support for Android and iOS seems doing well too.

    There is nothing preventing mobile platforms from being useful development tools besides the lack of software, and the processing intense process of compilation can easily be offloaded to a remote workstation or even a cloud service, in this case the device is used as a remote access terminal. Naturally, you could type in a plain text document and just write a small app to compile and send you the binary back, but bringing the SDK to Android is not something I consider pointless, since the power of those devices is growing fast, and even today they are powerful enough to compile code on their own if necessary.



  • Take a look at "this":http://sourceforge.net/p/necessitas/home/necessitas/ project. AFAIK at the moment all android devices are arm based. For Android 4 is a x86 port planned.



  • As side note, I already have done projects with necessitas ;-)


  • Moderators

    @Scylla - ddriver's question is a bit different. He wants to run Qt Creator itself on Android.

    @ddriver - you can try building Qt Creator on Android. I've never tried that myself, nor heard about anyone else doing that (although, strangely enough, I happened to think about this very same thing today). It might work. It works on Linux, Mac, and Windows without problems, so maybe it will also run on droid. That's the idea behind Qt after all - to be able to run the (almost) same code everywhere. Necessitas works brilliantly for both C++ and QML, maybe it will compile the whole SDK, too?

    If you do try, please write here about your results, I am very curious. Especially about getting the toolchain working on Android - that might pose some problems, you'll need a rooted device, of course.

    As for your info, "AFAIK":http://linux.slashdot.org/story/11/11/11/2036245/linux-kernel-power-bug-is-fixed it's a bit outdated. Power problem on Linux is being heavily worked upon, and there were already several patches that attempted to solve it. I am not 100% sure, but I think the newest kernel has it fixed (but there is call for testers to verify on more hardware platforms).



  • Last time I checked (a few days ago) the bug was still present in kernel 3.2, and since the bug has been around for almost a full year, spanning across a few kernel iterations, somehow I don't feel like it gets the priority it deserves.

    The moment Linux becomes a viable mobile option I will be a happy camper, since Linux is a powerhouse compared to Android and the limitations it imposes. Plus the Qt SDK works just fine as it is...

    Getting Qt Creator to run on Android is probably the easy part - my concerns are mostly with getting the entire toolchain running, something I fear I am too noob to accomplish on my own, so my hope rests with the good people at Qt.

    On a side note, I have been having those ideas of a truly visual way of programing, I don't mean visual as in visual studio, which is basically a graphic environment for typing, I mean a drag and drop component system that exports good old c++ code, the language base is not that big to deem the idea a failure, and having a graphics component system with c++ logic programmed in will offer a nice and above all FOOLproof way of programing, the idea started as a small environment to teach kids about programing in a visual way but if I find the time I may code the entire c++11 specification in. I consider making it a Creator plugin in order to take advantage of its parsing facilities and at least save myself the effort of writing parsers as well.

    Actually I am quite surprised no one really bothered to do something like that, google have made a miserable attempt at developing a node based scripting program, but it is pretty pathetic in all aspects, terribly slow and limited, whereas my idea is about implementing c++ in a visual way, enabling "conceptual" coding and reducing the influence of syntax knowledge and errors. This will be a future effort thou, since I am still learning Qt.


  • Moderators

    The visual part written in QML, surely? :-)

    There were several attempts I've heard about, that wanted to do this kind of thing, in many languages. None were too successful, maybe with exception of LabView - but that is not programming in general, just creating virtual lab instruments.

    Good luck!

    As for the Qt Creator stuff - Qt BErlin is hiring right now, you could give it a try.


  • Moderators

    @ddriver:

    • I did not really follow the power-issue, but my understanding is this: The power bug you keep referring to is actually fixing linux to work on quite a few machines where it did not run before. That is why it is so sticky: You can not remove it again without breaking linux for quite some users. That comes at the cost of other users of some hardware experiencing increased power consumption due to the hardware expecting a non-standard setup. I am sure there will be quirks added to work around that broken hardware in time. Phoronix does have its place, but that is not finding root causes of the problems they run into... better read lwn.net for that.

    • Android runs on the Linux kernel, so Android is Linux.

    • There is no fool-proof way to program, just as there is no easy and fool-proof way to construct a power plant. You can't expect Joe Random to be able to be able to build a power plant just because you hand him any set of tools. That does of course not mean that we can not come up with better tools for trained engineers to construct power plants.

    • There were several attempts at visual programming. During my studies I used a couple of them... all of them were not terribly productive, so none ever took off. If you are into teaching kids how to programm: Have you checked out "squeak":http://squeak.org/ (note: The screenshot page does not do justice to the project IMHO, http://www.squeakland.org/ shows the project in a better light)? That is rather graphical and you can do really cool stuff with it. It is based on smalltalk and not C++ though.



  • sierdzio - actually I am not that big fan of declarative programming. Sure it is faster and takes less time to actually put something on the screen, but I feel it is somewhat conforming. My current efforts are directed towards learning and mastering QGraphics... classes. I don't have that much time thou, since I am already employed full time so it is more of a spare time hobby.

    Tobias Hunger - I am aware that Android is based on a Linux kernel, but to my knowledge it branched off quite a lot and is not really compatible with Linux. I noted that even the latest beta Linux for Tegra form nvidia is still based on the good old non-bugged 2.6.36 kernel, probably due to the lack of the power consumption bug.

    Sure, no technology can be 100% fool-proof but some technologies are closer to being fool-proof than others. Modern IDEs like Qt Creator or Visual studio can already tell you that you are doing something wrong while you are still typing, and that is just through parsing alone. Using components that have the c++ best practice rules built in can be more aware of their surroundings and give you warnings like "I am not supposed to be here" or "My dynamic resource is leaking" will further assist users into following best practices, will also be much more visually informative than plain or even highlighted text and last but not least will loosen the syntax requirement for specific objects and their use, the idea is to focus on what objects are and what they can do and simply arrange them accordingly without the small and nasty minor syntax errors, typos and so on.

    You reference to squeak has reminded me I was actually looking into it, but it is basically a toy for kids, my idea is of full blown graphical node based programming that incorporates the full c++ specification, compatible with any C / C++ library just as regular c++, generating optimally performing c++ code following best practices as well as adding some higher level assistance to programing, like for example when you declare a class method you just right click and implement its code as a sub-tree of the declaration as if it is implemented in place, while still putting the code in a separate header file with scope resolution and the appropriate pre-processor directives, like automated templating, automated const correctness chains, visualizing operator precedence to avoid mistakes or extensive bracketing and basically offloading all the minor stuff the compiler damn well knows that is mandatory but instead of doing it just complains about it and returns error messages.

    The reason I like Qt Creator is it actually does much of those things for you and offers quite a lot of time saving assistance but I really feel like programing should eventually move to the next level, since more or less people today program the same way they did 30 years ago, there is so much progress in pretty much every area but the workflow for programing somehow got frozen in time. Sure, modern IDEs have offloaded plenty of labor from us, but I feel like there is more to be done in that area.

    My first endeavor will actually be a small application for visually drawing vector shapes (like corel draw or adobe illustrator) that translates the drawn objects into QPainter code classes that can simply be included and invoked with parameters to set templated pen and brush styles, since drawing with code using relative coordinates is somewhat suboptimal to just using the mouse to draw your shapes in a few seconds.


Log in to reply
 

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