I had a dream that one day, I'll be able to deploy existing Qt
software on any Android platform.
I had a dream that one day, all Qt applications will use system wide
shared Qt libraries.
I had a dream that one day, all Qt applications once compiled and
deployed to one android platform, will run on any other newer android
platform and will last for years without any recompilation.
I had a dream that one day, I'll be able to create, manage, compile
debug and deploy Qt apps using a first class citizen IDE.
Now, those dreams become reality.
Ladies and Gentlemen I have the honor and the privilege to announce
the immediate availability of *NECESSITAS* suite.
What does „ncecessitas” mean and what is it?
Necessitas is a latin word (Roman goddess of necessity) and it means:
necessity. It has more profound and powerful meanings, please check:
you'll understand what I mean :). Why don’t I use "Qt" and/or
"Android" words? Because Nokia "recommended" me NOT to use "Qt",
because more than 4 weeks ago I sent a mail to Google about "android"
word and I get didn’t get an answer until now. Why latin? I don't
know, maybe because I'm a latin :)
I also bought a domain name for this project it's called
", yes another latin word :) (http://
), it means
freedom, liberty. I choosed licentia.eu
as domain name and necessitas
as a subdomain because I don't want to stop here :).
Necessitas is a Qt suite for Android platform containing the following
- Ministro (http://www.archives.nd.edu/cgi-bin/lookit.pl
latin=ministro) is a system wide qt libraries installer/provider (you
can download the latest version from http://sourceforge.net/projects/ministro.necessitas.p/files
- Qt framework.
- Qt Creator for Android. (you cand download the package from
). For a seamless
debugging exepience I recommend you to replace official gdb with a
newer one from: http://code.google.com/p/android-lighthouse/downloads/detail?name=gdb.tar.bz2&can=2&q=
Thanks to Damien Buhl, you can find high quality documentation at
. Thank you again
fellow, without your help this release would not have been possible.
Before we get further I want to be crystal clear: This is an ALPHA
release! Is not meant to be used in production, PLEASE don't deploy
apps on Android Market because THE API IS NOT STABLE, please wait
until Nokia (or us) will ship at least a beta version! I deployed a qt
example (Animatedtiles) to Android Market ONLY to test Ministro
package promise, but it will be removed soon.
So, why this release is that important?
IMHO, for this project, this is the MOST important release ever, why?
Because now I'll put in your hands all the tools you need to begin
hacking on this project, and also to begin working on your apps,
because now, I hope, all the skeptic folks out there, will see the
potential of this project and will join us. Because Qt API is not
frozen yet, and if we need to add some API to Qt framework, now we
have a good chance to push them to upstream Qt.
Also I want to make clear one more thing, this project is community
work, Nokia and/or Google are not involved directly (yet, I hope :P )!
Also, I'm very grateful to Google because they made a wonderful truly
*free* O.S., I'm very grateful to Google because they have open minds
and they allowed this to happen, I'm very grateful to Trolltech and
Nokia because they made the best C++ framework ever: Qt framework, I'm
very grateful to Trolltech and Nokia because they made a first class
IDE for that framework.
Now the boring technical part:
What is done:
It was the most critical missing piece of this project, without it
this project is almost worthless, this installer/provider is the
guarantee that all your apps will run on ALL android platforms WITHOUT
any modification! (ok, you also can compile qt statically (or worst
put all qt libs into your apk) but your application will target only
one andriod platform).
How it works:
- when your application starts, it searches for Ministro service, if
the service is not installed, your applications will open the android
market and request user to install it (it also starts the search for
- (after the service is installed) the application connects to
Ministro service, it gives a list of qtmodules and waits
(patiently :) ) for Ministro's callback.
- Ministro downloads all necessary libraries (only if they are
missing), and callbacks the application and gives it a list with all
necessary libraries to run.
- the application loads all libraries provided by Ministro service
and finally it starts.
Sometime it receives corrupt data from the server (I didn't had enough
time to investigate this problem, I just try to download it again).
- Most of Qt framework is ported or in progress. This relase is
shipped only with "sw" platform plugin.
"sw" - comes from SingleWindow, this plugin uses only one Android
native window to draw all qt top level windows (IT DOESN'T mean you
can't have more then one top level window in Qt, like dialogs, menus,
combo-boxes, etc. ). Actually this plugins uses Nokia's framebuffer
implementation (IMHO this is very good because we don't need to
maintain our own plugin), I only made simple connections between
Nokia's plugin and android system. The ONLY problem this plugin has,
is that it doesn't support hardware acceleration so no OpenGL. For
OpenGL I need to resurrect "mw" plugins, I'll do it after sw plugin
will be production stable.
- The java part is cleanup and it provides only necessary
implementation for sw plugin.
) is the package name for qt
framework java part and probably
) will be for QtMobility part.
(A lot of :) ) Known issues:
Qt Creator for Android:
I think the following five words will discribes perfectly what is it:
Create, Manage, Compile, Deploy, Debug.
There are a lot of things to tell you about Qt framework <--> Qt
Creator integration, sadly my English is not good enough to do it, so
I'll let this images to speak for me: http://blip.tv/file/4790125
if you prefere youtube: http://www.youtube.com/watch?v=IMXUsfqUgYM
(youtube video was speedup al little bit to fit in 15 minutes youtube
Sometime it hangs big time, it seems I've done something wrong
You must install it into /opt/necessitas folder.
For some misterious reason, the uninstaller, doesn't remove the icon
from your desktop.
Todo list for all projects: http://sourceforge.net/p/necessitas/wiki/Todo
Before I end this announce I'd like to thanks you all for your support
and consideration. Also, I want to apologizes, because it took such a
long time to release this SDK, but please understand that is very hard
to do everything almost alone (and don't forget, I had to do it only
in my free time, it doesn't mean I hate my job, I'm happy with my
current job, with what I'm doing every day (even if is not directly
related with qt, but keeps my brain in good shape), I'm proud to be
part of a great top developers team). It is extremely hard to think to
big things and also to be very carefull to the details, that’s why
you'll probably find a lot of stupid bugs, I also apologize for that
too. Also, I want to thank to all pure souls, who helped me with this
I have a dream today, I have a dream that now, you'll be convinced by
this project’s potential and you'll join us in this beautiful journey,
and together, will finish this wonderful project. (Now it’s time for
you to say: keep on dreaming, sonny, keep on dreaming :) )
Seriously, now you have to decide what you want to do: you want to buy
Elot Savior bullshit about WP Nokia phones, and start learning a new
language made in Micro$oft labs, and silly-light (oh, sorry, shitty-
light, sorry again, one more try: silverlight, whew, is hard ..)API,
with, God knows how many, hidden patents which they will use them to
sue you, when they'll go down (see what happened with Google when they
tried to used java)? Or you want to stay with the most advanced and
free language and with the most advanced c++ framework and (soon) to
target millions of real phones (this phones are in peoples hands, now,
not in the Elot's dreams!), with the most used mobile O.S out there?
It's your choice!
The most immportant links:
New project page: http://sourceforge.net/p/necessitas/home/
Necessitas SDK: http://sourceforge.net/projects/necessitas/files/
For a seamless debugging exepience don't forget to replace official
gdb with a newer one from: http://code.google.com/p/android-lighthouse/downloads/detail?name=gdb.tar.bz2&can=2&q=
Thanks to Damien Buhl, you can join the documentation at
A small screencast showing you what we accomplished until now:
or if you prefer youtube:
Todo list for all projects: http://sourceforge.net/p/necessitas/wiki/Todo
I'd like to end this announce with some quotes (which I like very
Albert Einstein: "Only a life lived for others is a life worth while"
A pure soul on the net added to that: "Happiness is nothing unless you
have someone to share it with. Those who only live and care for
themselves end up miserable and lonely"
Linus tolvalds: "Software is like sex; it's better when it's free."
Thank you for your patience, support and consideration.
P.S. With your permission I would like to dedicate (only :P ) this
release version to my son Radu, I had to sacrifice some of our free
time to make this happen, so, this is how I can thank him !