Developing An Android Mobile Application

droid 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 –
Blackberry

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 . . .

* * * * * * * *

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. Just email him at AtonMail@aton.com.




Related posts

coded by nessus

Comments RSS    Trackback URL

4 Comments

  1. anandarajeshwaran.j @ June 12, 2009 9:40 am

    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

  2. Charles Wilde @ June 23, 2009 9:41 am

    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.

  3. Lynn Liss @ August 6, 2009 4:51 pm

    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

  4. Charles Wilde @ August 10, 2009 5:57 pm

    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.

Sorry, the comment form is closed at this time.