Archived:Porting from Android to Nokia Platforms
The following article describes recommended ways to port different types of Android applications to Nokia platforms, and also covers the most typical special cases.
Normal Android Java Apps
Since Android applications are written in Java, direct code-level reuse is typically not possible when porting to Qt. Typically the application design and assets can be reused in a new QML UI, and the code rewritten.
Java Native Interface
A notable special case is where the Java Native Interface (JNI) is used in the Android application. JNI allows the use of C/C++ shared libraries from Android code.
Although this is not a recommended way to develop basic Android applications, it is very useful in some specific cases — for example, with games relying on existing game engines, which are often written in C/C++.
If the Android application uses these kinds of C/C++ shared libraries, code-level reuse is also often possible, especially towards the Maemo platform but also sometimes towards the Symbian platform.
Nowadays, in addition to developing Android applications directly in the Java language, several Android applications are also built as web applications using the WebKit approach with tools like Titanium Mobile or by utilizing the LibWebCore in manual fashion from the Android application.
For these types of web applications the recommended porting approach is to rewrite the application with Qt Quick, especially if the intention is to develop an impressive UI. For more information on Qt Quick, see the section on Qt Quick in the porting introduction.
Developers could also consider building a Qt Quick application and basing its functionality on embedded web views; for more information, see the Fundamental porting use cases document.
Although code cannot typically be reused, the graphics and design of the application can often be reused to good effect. For example, in Qt Quick, scaling of the existing UI elements is very easy and may not require much rework from the UI designers.
Generally, however, your application will look best and be most usable if you take some time to redesign the application layout. An application layout that looks great on an Android device may not be very usable on a Nokia device, since the usage paradigm of user interface and available features affecting the user experience are different.
For more information on UI design for Nokia devices, see [http://www.developer.nokia.com/Design/ the Nokia Developer Design and User Experience Guide].
How to Proceed with Porting
To proceed with porting, the following guides are recommended (part of this "Porting mobile application to Qt" article series):
- Porting Mobile Applications to Qt, if your existing application is UI
intensive, or for any generic native iPhone application. This is the main introductory article about porting to Qt.
- Porting from iPhone to Nokia Platforms - high-level starting guide for
porting iPhone applications to Qt
a few powerful modules and how to port those to Qt
- Useful-porting-examples - common features needed for porting applications
- Qt Quick examples for porting - examples for creating fancy UI elements
with Qt Quick
- Porting iPhone web app to WRT on Nokia devices, if your existing iPhone
- Wordpress developer story describes the real-life experience of porting an
application from iPhone to Qt. Both iPhone and Qt sources of the Wordpress client are also available as open source.
- See also [http://www.developer.nokia.com/Design/ Nokia Developer Design and
- User Experience Guide] for ideas on how to achieve the best possible user
- experience when porting your application for Nokia devices.
Copyright © 2010 Nokia Corporation. All rights reserved.
Nokia, Nokia Developer, and Maemo are registered trademarks of Nokia Corporation. Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. Apple, iPhone, iPod and MacBook are trademarks or registered trademarks of Apple Inc. Android is a trademark of Google Inc. Other product and company names mentioned herein may be trademarks or trade names of their respective owners.