Developing An Android Mobile Application
The mobile phone marketplace is exploding with enthusiasm and opportunity. Where much of the rest of the high tech world has settled down into evolutionary improvements, the mobile world offers the promise of entirely new uses for ever smarter devices.
According to Wikipedia “Out of 1 billion camera phones to be shipped in 2008, smartphones, the higher end of the market with full email support, will represent about 10% of the market or about 100 million units”.
For the past six years, Aton International, Inc. has continually studied the marketplace for changes and opportunities. Right now, we are seeing major shifts happening that mobile developers need to watch closely.
Nine Major Mobile Operating Systems
The high end smartphone market now includes nine predominant operating system platforms. The most common operating systems (OS) used in smartphones in Q3 2008 are:
- Symbian OS from Symbian Ltd.
- iPhone OS from Apple Inc.
- BlackBerry OS from Research In Motion (RIM)
- Windows Mobile from Microsoft
- Linux operating system (LiMo, Access Linux, others)
- Palm OS developed by PalmSource (now a subsidiary of ACCESS)
- Palm webOS from Palm to be introduced with the new Palm Pre smartphone.
- Binary Runtime Environment for Wireless (BREW) from Qualcomm Inc.
- Android from Google (Released 22 Oct 2008)
Symbian got its start in 1998 as a partnership between Ericsson, Nokia, Motorola and Psion. It had been the most prevalent operating system for phones with features. Figures for the 4th Quarter 2008 show Symbian losing ground to Blackberry, Windows Mobile and iPhone. Google Android had just been released.
Worldwide: Smartphone Sales to End Users by Operating System, 4Q08 (Thousands of Units)
|
Company |
4Q08 Sales |
4Q08 Market Share (%) |
Growth 4Q07-4Q08 (%) |
|
Symbian |
17,949.1 |
47.1 |
-21.6 |
|
Research In Motion – |
7,442.6 |
19.5 |
84.9 |
|
Microsoft Windows Mobile |
4,713.9 |
12.4 |
7.8 |
|
Mac OS X -iPhone |
4,079.4 |
10.7 |
111.6 |
|
Linux |
3,194.9 |
8.4 |
19.4 |
|
Palm OS |
326.5 |
0.9 |
-27.3 |
|
Other OSs |
436.9 |
1.1 |
6.2 |
|
Total |
38,143.3 |
100.0 |
3.7 |
Note: The “Other OSs” category includes sales of Sharp Sidekick devices based on the Danger platform and BREW.
Source: Gartner (March 2009)
Which Mobile Phones Should We Develop For?
Aton International, Inc. has been developing and selling commercial software applications for the Windows Mobile platform since 2002. We have also helped many of our consulting clients to develop or port applications to the Windows Mobile and Windows CE platforms. We understand the Microsoft platforms well, but want to expand our scope to include some of the other mobile platforms.
Our proprietary mobile application, Aton Connect for Windows Mobile, that would make a good initial candidate for porting to another mobile platform. Porting this product requires solving a number of issues that would provide the necessary background experience needed to port just about any other commercial product. But, which one?
Aton Connect is designed around managed code (.NET Compact Framework) for the user interface, and two native C++ DLL’s. One of these native DLL’s is used to provide connectivity to the host server, the other to provide custom screen image processing. We want to port the C++ DLL’s into native C++ code on the new platform for performance, code security, and development time considerations.
So a matrix of mobile OS platform capabilities looks like this:
|
Operating System |
Managed Code |
Native Code |
Difficulty |
Growth Potential |
|
Symbian OS |
Java (JME), NS Basic, others |
C/C++ |
Complex for development due to history and design |
Current market large but shrinking |
|
iPhone OS (Mac OS X) |
Prohibited by Apple |
Objective C, C/C++ |
Architectural constraints imposed by Apple |
Medium market share, growing rapidly |
|
BlackBerry OS |
Java (JME) |
Prohibited by Rim |
Network architecture imposes constraints |
Medium market share, growing rapidly |
|
Windows Mobile |
.NET Compact Framework |
C/C++ |
Rich environment, excellent developer tools |
Medium market share, growing steadily |
|
Android OS |
Java (Dalvik) |
C/C++ |
New design, elegant and flexible architecture |
Small market share, growing rapidly |
|
Access Linux |
Java |
C/C++ |
More complete than LiMo, good tool set and design |
Very small market share, poor carrier adoption |
|
LiMo Linux |
Java (to be provided) |
C/C++ |
New design, LiMo tool set not yet complete |
Very small market share, appears to be growing |
|
Palm OS (Garnet) |
None currently supported |
C/C++ |
Legacy design, tool support fading away |
Small market share, shrinking |
|
Palm webOS (Pre) |
HTML 5, JavaScript, and CSS |
None |
Uses existing web programming skills |
Not yet released, growth potential possible |
|
BREW (Qualcomm) |
Java |
C/C++ |
Strict code signing regimen, deep level system programming skills needed |
Medium market share, mostly US based. |
Aton Connect runs entirely as client software on the mobile phone. It is designed to be used with enterprise servers and Windows Mobile is a natural platform for an enterprise application. Windows Mobile is, in our view, the most robust mobile development platform for enterprise related mobile applications.
Other platforms offering some support for enterprise applications include Blackberry, iPhone, and Android. Applications for the Blackberry must be developed in Java managed code, with no native DLL’s allowed. To run on the Blackberry, all of the C++ code in Aton Connect would need to be translated to Java. Because of this restriction, and other restrictions related to network architecture, we eliminated the Blackberry as a first choice of a platform for porting Aton Connect.
iPhone is a better platform for our purposes, with support for the Objective C language, which is compatible with C, C++, and higher level API’s implemented in a form similar to C++ template libraries. Unfortunately, the iPhone precludes the ability to run services or programs in the background, which can cause a severe problem in maintaining active TCP/IP connections for the duration needed by Aton Connect. iPhone does not currently support a managed code language such as .NET or Java.
Android offers an implementation of the Java managed code platform. This is not the Java Mobile Edition offered by Sun, but rather an independently developed Java machine called Dalvik. Native code can be interfaced through JNI. This is currently unsupported, but the Google Android team is developing the “Android Native Development Kit” to officially integrate C/C++ native code with Java via JNI for a complete solution.
Android also supports background services and has a very well thought out support system for GUI navigation. The platform is more open than the iPhone platform in terms of being free to develop and deploy applications without being arbitrarily constrained by the platform vendor. This newer mobile OS is attracting wide based support by serious players in the mobile market place, along with the support from Google.
The Mobile OS Winner
We chose Android as the next platform to implement after Windows Mobile because it offers several interesting features. So what we will describe over the next few weeks is how a mobile developer, without significant experience with Android or Java can port an application to this platform. We will describe the required software development tool sets, and provide detailed instructions on how orchestrate all of the tool parts to build and deploy a mixed managed and native code application. We will also offer sample code that will jumpstart your own application porting efforts.
Stay tuned . . .
* * * * * * * *
Other posts in this series:
- Developing An Android Mobile Application
- Android Software Development Tools – What Do I Need?
- Android Native Development on Ubuntu 9.04 (Jaunty Jackalope)
- Android Native Development Using the Android Open Source Project
- Android Native Libraries for Java Applications
- Porting Native Code to Android: From Business Case to Coding
- Pure Native App or Java Shell for Android Market?
- Porting Applications Using the Android NDK
- Integrating the Android NDK C++ Native Support into Eclipse Using Sequoyah
With 20+ years as a top software and firmware developer, Charles Wilde has acquired a combination of proven business smarts, mobile development skills and device engineering expertise that is hard to match. Charles is available to consult with you and your team about native code development in Android, Windows Mobile or Windows CE. Wilde is the author of Porting Native Code to Android and can be reached at AtonMail ( at) aton (dot) com. © 2010 Aton International, Inc.
4 Comments
Sorry, the comment form is closed at this time.

I would like to start developing for the Android platform. I am a .NET developer what skill set should I develop to start developing for android
It depends on what kind of application you want to build. As with .NET, you can build a pure managed application with C# or VB. Inside your managed application, you can access native C/C++ code using PInvoke. The situation is very similar with Android. Build managed code applications using Java. If you desire, you can then access native C/C++ code using JNI. The processes for development on Android and Windows Mobile are very similar in concept, but they are parallel universes with totally different tool sets.
I am writing a series of blog posts detailing how to get started building mixed mode Android applications, that utilize Java for managed code and C/C++ for native DLL shared libraries integrated with Java managed code via the JNI interface mechanism. The blog posts detail exactly how to set up the various tools used for Android development. Also explained is how to approach building Android mixed mode applications for the developer familiar with Microsoft .NET / Windows Mobile.
These posts will appear on this site in a few days.
Great article! Any ‘demographic’ user data lined up with these OS/Mobiles? I’m in the process of launching a startup with a mobile play, and knowing what age range uses which phones would really help! Thank you so much! Lynn Liss
I have not located any specific ‘demographic’ user data for these OS/mobiles. The dividing line seems much stronger along the consumer / enterprise division. The RIM Blackberry and Microsoft Windows Mobile seem much stronger on the enterprise side, Apple iPhone and the rest are stronger on the consumer side. As always in the mobile world, things are changing, with Apple and Android making a concerted move to adapt to the needs of the enterprise. Windows Mobile is moving towards a user interface that is much more acceptable to the non-techie consumer. I see a good result in Windows Mobile 6.5 to soon be released, with a major update in Windows Phone 7.0.