What development platform for smartphone?
How to program a mobile device? Which framework to facilitate the task? Which programming language to use? Can we make the application portable? Which OS to choose? We will try to answer all these questions.
The number of users of smartphones and tablet PC, running applications created by third parties, is already higher than the number of desktop computers. It is therefore evident that a programmer needs to focus on this market.
Do not hope on compatibility with desktop systems (although emulators are provided to develop on Windows, Mac, Linux). The interface screens are different and unless it is limited to applications in the browser, we should rethink the application and expect to use different APIs.
Mobile operating systems
The languages and tools are different depending on the operating systems. We will show them but will not go into details of applications structures for each system, they are described in their development centers.
The iPhone system preferably operates applications written in C or Objective C, or HTML 5.
After banning the use of third party frameworks (like Flash) to create an application that is accepted on the AppStore, on September 9, 2010, Apple has changed its policy and abandoned any restriction on the tools used to build applications for the IOS.
Statistics show that 80% of iOS developers do not have enough income to support a business and 60% to offset the cost of development. According to a recent article in The Register, there are 700,000 applications in the AppStore, but 25 made 50% of revenues and are games from Disney, Zynga, EA!
Cocoa is the development tool for Apple and C-like language, with the UIKit framework.
- iOS Dev center. Development center for iPhone.
The Google system now has a very broad installed base, equal to that of the iPhone in the U.S. and is therefore one of the two privileged markets for the developer.
The Android SDK provides APIs for building applications. In December 2015, OpenJDK replaced the standard Java API with Google's implementation. The kit includes an Android mobile emulator to test the applications on Windows, Mac, Linux.
The ADT plugin for Eclipse adds an IDE.
The NDK, N for native, adds native code, so written in C or other language compiled into binary.
The first programming language is Java, but thank to SL4A it is possible to use another language such as PHP, or C# with Xamarin (commercial).
You can also use LLVM thanks to the Snapdragon Compiler (starting on the 4.3 version).
- Android Studio. IDE based on IntelliJ IDEA, more intuitive than Eclipse (on which Google had first worked), makes it easier to make Android applications on Windows. Monetization is a supported function. Version 1.3 supports development in C++.
- Programming for Android. Experiences of developers and tools.
- Dalvik. The first Android virtual machine.
- Android++. Programming in C++.
It is the successor for Meego, supported by Intel, Samsung, NEC, and many other firms, it uses HTML 5 for the interface and Linux as backend. The name is probably an abbreviation of "citizen".
He succeeds Limo too, an initiative of the Linux Foundation for a mobile Linux-based system.
It is an alternative to Windows 8 that will run on tablets and will support applications for Linux, with Qt and GTK. If Microsoft sticks to its intention to charge 30% of applications in Metro, Tizen will surely interest publishers. Applications developed in HTML 5 and WAC will work on all devices.
Its availability with an SDK it planned to first quarter of 2012.
Android on a Revolution device
It uses Linux and Gecko for the backend, and HTML 5 interface has advantages:
- No fragmentation.
- Compatible with all devices.
- Really free unlike Android because Microsoft charges a fee patent on the latter.
Some devices like the Revolution allow you to choose between Android and Firefox OS at startup, which ensures greater durability since updates are limited on the first, not on of the second.
Firefox OS was discontinued on December 9, 2015.
Unlike the iPhone, the Microsoft operating system favors writing application in C#, but you can use C++ also. Applications run on a light .NET version.
The interface of WP 7 can be built with Silverlight or XNA, a framework for games.
WP 9 may be incompatible with WP 8 due to the goal of Windows unification. This does not encourage programming for the platform!
OS 6 from formerly RIM, now Blackberry, supports multitouch. Programming is done in Java or with the SDK for Web applications.
QNX is used on tablets and allows to run Android applications, provided they are accepted on the App World distribution platform.
Blackberry 10 is based on QNX and succeed to it, it is a unified platform for tablets and smarphones. In 2016, Blackberry has moved to Android for new models and we may consider the BB10 OS as buried.
- Blackberry Development Center.
- WebWorks. Plateform for HTML 5 development.
- How Blackberry works with app developers. Testimony by a developer that does not encourage to program for the platform.
The PDK allows to add native code, written in C or C++ to applications. The SDK includes a simulator to test applications under Windows or Linux, and Enyo, an Ajax framework that includes widgets. You can add your own widgets.
Enyo replaced Mojo, for a faster framework compatible with HTML 5, suitable for tablet PC.
- WebOS. Full description on this site.
Meego is a Linux system (hosted by the Linux Fundation) resulting from the merge of Intel's Moblin and Nokia's Maemo.
Many other manufacturers have joined the Meego consortium, this system works on mobile phones, tablets and netbooks. A common code is used for all these devices.
Abandoned by Nokia, Meego is replaced by Tizen, supported by Intel and Samsung that uses HTML 5. The original system continues with the independent company Jolla under the name Sailfish OS. Jolla is a company founded by former employees laid off en masse. In July 2012, it found a first manufacturer. In August 2013 it has enough pre-orders to start production, unlike Ubuntu Mobile. According to testers of the first model, released in November 2013, Sailfish is the most intuitive of all interfaces for mobile.
Sailfish uses the Qt framework and can be programmed with the Qt Creator IDE. The Meego UI Toolkit is a layer added to Qt, it is complemented by Handheld UX for mobiles and Neetbook UX for tablets and netbooks.
The programming language is C++.
Sailfish can run Android apps.
- History of Meego. The devices and the politics. Introducing Jolla, a project to develop Meego without Nokia.
Based on Linux, this is a mixed system for desktop and mobile (like Ubuntu tries to be also), which use either the touchscreen or the keyboard and mouse depending of the machine. Using the latest technologies like Wayland, it is particularly reactive.
Not yet stable, it can be used to replace an outdated OS on an old machine.
When Wayland will have replaced X, the same universality will be possible with any Linux distribution.
Symbian 3 is an open source platform. The PDK (Product Development Kit) can be downloaded to build an application. The ADT (Application Developent Kit) provides the tools to develop an application running on Symbian.
The languages used are C++ with Carbide, Java ME with Eclipse Mobile or NetBeans Mobility, Python with PyS60, Ruby with Symbian Ruby, Flash with Flash Lite, widgets using HTML 5. The.NET support is uncertain.
With the Nokia Qt SDK, we can develop and test applications on the desktop that will run on Symbian and Meego.
Symbian will gradually be replaced by Windows Phone and probably a new Linux-based OS for cheap models. The development of Symbian was transferred to another company, Accenture in June 2011.
They now may be used on the iPhone providing the applications do not load executable code as Flash can do.
Interface Development for Android or local applications. It has its own SDK, an API interface to the system, which facilitates the port from one platform to another.
These languages are compiled into native language (ARM) for mobile.
The same applications can run on a browser, thanks to a plugin. They also work on Windows and Mac, over .NET.
In March 2014, Unity has announced support for WebGL and Asm.js beside their browser plugin. This allows applications running on any device.
- Unity3D. All versions, desktops and mobiles are free for developpers and small startups.
Free and open source since April 2016, this C# framework is included in Visual Studio Community Edition and allows to build apps for iOS, Android, Windows, Mac, Linux.
HTML 5 is the universal platform, running on all phones without any adaptation of the code but with limitations.
Nokia offers a development kit to build portable apps without native code.
The App Store for the iPhone includes Opera Mini, a smaller version of the browser, dedicated to mobile. It seems that this browser is not a web application platform. Indeed, Opera Mini 5, if it supports SVG and CSS 3, has no support for essential components: HTML 5 forms, Ajax.
But Firefox for Android supports 100% of HTML 5. As does the native browser.
- What framework for a mobile application?
- HTML 5, Titanium or native?
- HTML 5 in the App Store. HTML 5 application or online service, can be incorporated into the Amazon App Store and generate income as a native application.
- TouchDevelop. From Microsoft, open source, the code is on GitHub. For those who have time to spare and want to occupy it other than playing on the mobile, this platform allows to develop applications directly on the smartphone, in TypeScript and in a special language. Compatible with all systems.
The platform is used by Facebook, Instagram and several major websites.
- React Native. Development may be done on Mac, Linux, Windows or Android
This framework based on the Dart language is now usable in 2017 and authors are already abandoning their native iOS or Android platform for it, to take advantage of the possibilities offered by the language.
Supports Material Design, recognition gestures, interactive widgets, etc ...
C++ for mobiles
Microsoft offers to make mobile applications written in C++ from Visual Studio. They can run on iOS, Android, Windows.
More tools and infos
- Intel XDK. A framework and a universal tool for development, creating installations for different mobile OS.
- Mokk.me. Very useful for knowing how will looks an application before to make the program: You can easily create an interface in a false mobile phone. You can then get the HTML and CSS code of the interface.