Necessitas is a community project led by BogDan Vatra which is born from the need to extend a great framework to support one of the most widespread mobile platform in the world.
The Qt framework ([http://qt.nokia.com/]) is a great Development Framework! It's multi-platform, complete, mature and bleeding-edge at the same time. With Qt you can write great applications for the desktop (Windows, Linux and Mac) and for the mobile world (tables, phones... Symbian, MeeGo, Maemo, Android, IOS, BlackBerry, WebOS...) and also in the embedded world. Qt is a C++ framework, which is a plus if you don't like Java that much.
Android... well, it does not need introductnios. The Google powered mobile system, based on Linux, it's both the most widespread and more open mobile environment available today.
Necessitas comes from the need of exploting the power and the multi-platform capabilities of the Qt framework on the Android world. It was born as a concept work which demonstrates the flexibility of Qt and, today, strives to become a fully working development solution for Android.
Necessitas is the work of a few. Mainly, BogDan, and a few others. Everybody is invited to join our efforts and contribute.
The current status of the project is, albeit still in alpha, already encouraging. A few fully working apps have been released on the Google Play by various developers including some complex applications... Check them out... Both QML and QWidget based UIs are supported!
Not everything works, or at least not as expected, but a steady and committed work is done to improve every new release.
The main Qt framework works. QML works, QWidget (with the limitations of QWidget in the mobile world) works... QtWebkit works too... and QtMobility is partially working. QtLocation and QtSensors mostly works, while QtMoultimedia and QSound is, at the moment, still work in progress.
Are you a developer?
Do you already have a Qt application written for Symbian, Windows, Linux or any other Qt-supported platform? Great! Grab Necessitas and start porting it to Android too! You will find that's almost as easy as recompiling (ok, maybe not so easy, but...).
Do you want to develop a new application for Android but you don't like Java? Well, enjoy the leverage of C++ with the Qt framework! Or maybe you want to write a new app and ensure it will work on almost any mobile environment out there? You will find Android with Necessitas the best solution besides the Nokia-supported platforms.
Necessitas uses the Android NDK. Basically, your Qt application is compiled as a dynamic library and a Java application wrapper is added to interface it with the Android enviroment. You don't have to worry, because everything is managed automatically by the Necessitas SDK. You just fire up Necessitas' own QtCreator, write your code, hit the deploy button and the magic will do itself.
So, what are you waiting for? Go check the [How to install Necessitas SDK] page! Or, if you are more into hacking and thinkering, you can also be brave and [Compile Qt framework] and of course also [Compile QtCreator]!
Don't forget to check the tutorial on [How to write Qt apps for Android]!
If you want to help us please check [Guidelines for contributions to Necessitas project] wiki page...
Wiki: How to install Necessitas SDK
Wiki: Compile Qt framework
Wiki: Compile QtCreator
Wiki: How to write Qt apps for Android
Wiki: Guidelines for contributions to Necessitas project
Anonymous
2011-02-25
Awesome! Great work! Thank you for your work and time spent!
hydrool
2011-02-25
Great Logo!
Anonymous
2011-02-25
Isn't that the same as from Lighthouse?
http://code.google.com/p/android-lighthouse/
daminetreg
2011-03-02
Yes this is the same project, although for free storage and infrastructure reasons we had to use sourceforge too.
Anonymous
2011-03-02
How is the binary necessitas sdk built? The git section here on sf.net is empty... I've cloned the android-lighthouse and qt-creator repos from gitourious but I couldn't figure out how the binary sdk is obtained. Could you shed some light on this?
daminetreg
2011-03-02
The installer source code is not shared by BogDan certainly because he didn't got the time to add it to any scm, I will ask him about this.
BogDan Vatra
2011-03-03
I [Compile Qt framework] and [Compile QtCreator] and then I'm using http://www.installjammer.com/ to create the SDK.
Rommel
2011-03-02
Hi: How do I include the android libraries to my Qt Project?
I mean, for example access the GPS or clinometers?
THX
daminetreg
2011-03-02
Currently the port of Qt Mobility isn't finished but should provide access to this elements. If you want to help the Qt mobility port you are welcome, however you can use gps and so on by doing your own JNI bindings to wait the Qt Mobility port, although if you do it, it could be cool that you integrate your work to the Qt Mobility port, because it would help others too.
Carlos Quiros
2011-05-13
Hi Rommel,
Did you had any luck accessing the android libraries?
I got stuck with activity.getSystemService(String serviceName)... How can I get the activity where QT is running from?
Thanks in advance.
Rommel
2011-05-13
Hi Carlos:
I'm sorry to say that I just quit trying, I was only experimenting with Necessitas, I'm not in a hurry or something. I'm not capable of doing the bindings by myself, so I will wait.
Sorry for not been helpful :-S
Carlos Quiros
2011-05-18
ok.
I managed to make an application to use the GPS service. You can see the post here:
http://www.qtcentre.org/threads/41698-QT-in-Android-Example-for-accessing-the-GPS-Service
This wiki somehow does not allow to post the full story.
There is some critical information for BogDan Vatra et al.
Hope this will help others.
Thanks.
Atul Sharma
2011-03-18
Excellent work!!!
Question - Can I embed flash content? If so how?
daminetreg
2011-03-18
It seems not possible for the moment, even if Qt Webkit works you won't get the flash plugin running on your device as a mozilla npapi plugin (supported by QtWebkit). Flash isn't open source, so it seems hard to me to port it for this use case.
M Greene
2011-03-18
"/home/mgreene/android-sdk-linux_x86" doesn't seem to be an Android SDK top folder - I keep getting this error message despite reinstalling SDK and necessitas several times. I am using Ubuntu, ant 1.8,OpenJDK, and installed in /opt/necessitas
daminetreg
2011-03-18
Did you follow the instructions [Setup Android SDK], because you need to update your sdk with the graphical manager included in it. :)
Please don't open Qt Creator while SDK is installing.
viny
2011-03-23
Just to point out an error in default build configuration, the shared libraries (included via Qt Creator Left Pane -> Projects -> Run -> Libraries -> PreBundled Libraries) names should not be "libLIBNAME.so" in libs.xml but only "LIBNAME".
turtlerace
2011-03-23
BogDan,
let me first thank you for this fabulous work. It is a pleasure to use it.
I have a problem migrating an existing linux project to necessitas.
The project consists of an executable and a static library (2 "subprojects")
Everything compiles, a lib...a is created for the static library.
However, when I try to deploy the app, necessitas tries to copy a lib...so to the device. This shared library, however, does not exist.
Did I misconfigure something?
viny
2011-03-23
I also encountered the same issue as above (@turtlerace). I just did a temporary workaround by making a dummy lib...so for further processing :p and have successfully deployed my project after that :)
I am also looking forward to proper solution for the above issue
turtlerace
2011-03-23
Thanks viny, splendid idea. I changed to shared linking only for this project which also works. But I want to go back to static when it will be possible.
BogDan Vatra
2011-03-23
@turtlerace
Please open an issues about it, I'll fix it soon.
@viny
Thank you !
viny
2011-03-30
I am having a problem in using custom imageformats qt-plugin in my qt-application-on-android. I am using a custom image format for performance issue and use custom imageformats plugin for this. On linux-x86 it works just fine by adding the plugin library path as
QApplication::addLibraryPath("PLUGIN_LIB_PATH");
and I can load the images properly in my application.
I have tried the same way by adding the plugin-library path as above on android but it doesn't work. Pushing the libraries in default plugin path "/data/data/eu.licentia.necessitas.ministro/files/qt/plugins/imageformats" also didn't work.
Since on android, we have to manually load Qt libraries also, so I tried manually loading the plugin library in QtApplication.java itself. It loads the plugin library successfully as seen in adb logcat, but still the images cannot shown in the application.
Could someone give me some idea about how can I use custom Qt-plugin to work for my application to run on android successfully?
Steph Steph90
2011-04-06
How can i use the android's API in my Necessitas's Project??
Wu Xiao
2011-04-24
According to necessitas' source code, you can use QtAndroidBridge::m_javavm static variable pointing to the Dalvik JVM and JNI to use Android API.
Steve King
2011-04-08
I have an application with bundled libs, but when I try to deploy it the budled libs don't get loaded. The application output reports findLibrary fails for each of them and then the main application fails because the dependency fails. I haven't seen a demo of one working with bundled libs so any help would be appreciated.