The superabundance of mobile devices and operating systems makes mobile application development a challenging task. The ideal is to develop applications that work on all devices by using a single code base and yet give the apps a native feel. Let us briefly look at a few open source mobile app development platforms that help developers do so.
As of the first quarter of 2018, we could choose from about 3.8 million apps on Google Play Store and 2 million on Apple’s App Store (as per Statista2018). By 2020, mobile apps are expected to generate around US$ 189 billion in revenue via different app stores and from in-app advertising. All this illustrates the growing culture of mobile app development.
The development of any mobile app has its roots in traditional software development. But, the end result needed is software that makes use of the unique features and hardware of different mobile devices. Mobile applications must be designed to give optimal performance within the constraints of the mobile phones’ hardware. For instance, a mobile gaming application will have limited graphical elements as mobile devices have limited graphics processors. Solving the performance issue on any given device mainly depends on developing apps natively on that specific device. So code needs to be designed specifically for the given hardware on a particular device. This is quite easy in the case of iOS devices, since developers only require versions of the application for the iPhone and iPad in order to achieve universal usability. However, all the other smartphones or tablets run on different hardware systems or on varying versions of the same operating system.
Mobile app development covers a set of different procedures and processes. As we know, these applications are more like desktop software, and are designed using a wide range of programming languages and software development frameworks. These mobile apps can be pre-installed on various mobile phones or can be delivered as Web applications using client-side and server-side processing to create an ‘application-like’ experience within a browser as well. Mobile app developers need to consider the following parameters while developing an application:
- The operating system supported by the mobile phone
- The different hardware specifications like the processor speed, RAM, etc, of the mobile phones on which the app needs to run
- The configuration of the mobile phone
- The wide range of screen sizes of the different mobile phones
- The programming language used for developing mobile apps. It could be objective-C, Java, etc
- The platforms that will be used for development, deployment and the management of different mobile apps
Mobile app development services
Any mobile app development process requires access to the software development kits (SDKs). SDKs provide an environment with which programmers can design and test the code in a simulated mobile environment. Developing a mobile app does not require full usage of these kits; for instance, various mobile games can be developed entirely using Unity and then the Android SDK can be used to simply ensure its delivery on mobile devices. Developing applications for iOS mobile phones requires a paid iOS developer licence, whereas the Android SDK is available free of cost to users.
Mobile app development is in a continuous state of change. A new operating system (OS) typically rolls out every six months or every year, with a few unique features that mobile apps can utilise. Developing mobile apps for a specific version of the operating system (OS) or even developing them for a native OS is much like the story of Goldilocks — requiring that multiple solutions be tried out before finding the perfect fit for one’s development needs.
Mobile app development platforms
Mobile application development platforms, also referred to as mobile enterprise application platforms, belong to the group of both products and services that help mobile apps to be developed in a systematic order. With the presence of a wide variety of mobile devices, networks and user groups, the development of mobile software applications is continuously becoming more challenging and difficult. Using a mobile app development platform can help in handling and overcoming this challenge. Such platforms allow a business to rapidly build a mobile app, test it and then deploy it on different smartphones or tablets. The platforms can manage different devices, both when they are deployed or even during the entire life cycle of a mobile app.
Gartner has been credited with coining the term ‘mobile application development platform’. These platforms consist of both a mobile client application as well as a mobile middleware server. The latter does not store any data sets in itself, but it manages their security, scalability, systems integration, cross-platform support, communications and more. The client applications then connect with the specified server, and hence are the driving force behind both the applied business logic and the user interface on any given mobile device.
A business can have its own mobile application development platform built or it can buy one of the many third party products available. These platforms include various features, the most significant of which are:
- They are equipped with front-end development tools and management tools for application programming interfaces (APIs).
- They also provide the mobile Backend as a Service (BaaS) feature.
- They possess native, Web and hybrid mobile app development capabilities.
- They include mobile application management (MAM) tools that are used for deploying and securing the apps.
- These platforms implement both inclusive and long-term approaches, which are really helpful for standalone mobile apps.
- The mobile software application is developed once and then deployed in all the different mobile devices including tablets, smartphones or notebooks.
- They ensure that the mobile app is compatible with each mobile device that it is sent to, without changing the way the application works.
- They help ensure adherence to the Rule of Three, which refers to the need for mobile solutions that work together with three or more back-end data sources, are compatible with three or more mobile applications or work with three or more operating systems.
Criteria for choosing a mobile application development platform
Going cross-platform, staying native or going cross-platform while staying native – these are some of the choices available to developers. Such options can create quite a bit of confusion for someone who simply wants to develop a mobile app. So here are some of the factors, which if considered, can clear this confusion to a great extent.
1. Different types of devices supported: The very first step in choosing the right solution is to determine the types of devices each platform supports. A list of tools that enable us to build native applications, cross-platform applications or both for popular mobile operating systems (iOS, Android and Windows) and different devices (tablets and smartphones) should be created. This differentiation becomes easier when a platform supports additional operating systems and devices.
2. Integration with third party systems: An effective mobile application development platform should have the ability to seamlessly integrate with different third party technologies and tools that impact the app throughout its life cycle. The platform must not only ensure seamless integration with other services and systems but also allow developers to create applications that support mobile app management. This integration should extend to different existing back-end systems and the continuous delivery infrastructure.
3. Integrated development environment (IDEs): When we analyse various mobile application development platforms, we should consider all the options available. The future requirements of the app, considering that they are likely to change, should be planned for. Platforms differ in the development features they provide. Some platforms provide modern IDEs, which can be installed on the machines of developers, while other platforms provide Web based plugins or tools that can be connected to third party IDEs. There are a couple of platforms that offer a combination of all options.
4. Security: While considering the security features of platforms, developers must look for compliance with industry standards, data encryption capabilities and systems monitoring. All the leading vendors such as Microsoft, Sencha and PhoneGap comply with industry standards and provide multi-level security for mobile applications. A thorough review of the prospective development platform should be made in order to ensure that it meets compliance and security needs. Apart from all this, different problems that might arise while integrating the mobile application development platform with other security and enterprise systems should be considered.
5. Video or audio processing: Video/audio channels are perhaps the most whimsical feature of any mobile software application. Only platforms that support high quality video processing, which ensure that apps behave their best, should be considered.
6. Usability: It is important for any mobile app development platform’s interface to be user-friendly and highly intuitive. It should work the way the application developers expect it to and should have the ability to be enhanced to enable collaboration in case a development team needs to work concurrently during the build cycle.
7. Integration with ERP and CRM: It’s always good to choose a mobile application development platform that can easily integrate with CRM or ERP, which are the key requirements of a mobile application.
8. Costs: The total cost associated with different licensing development tools, the required infrastructure, development cycles, and deployment of any mobile app can really become worryingly high. However, there are a couple of cloud based services which offer options that can take care of most of the workload. This can reduce the total cost involved in developing a mobile application.
9. Skills required to use the platform: Even if an enterprise decides to choose the low-code path, some development code needs to be written, eventually. Hence, skill sets or programming language skills required to use the platform chosen should be sought so that the platform can be effectively utilised. If any business is in a hurry to get the mobile app to the market, developers might opt for services that offer code samples or templates.
Let’s now have a quick look at some of the widely used mobile app development platforms.
- Provides a GUI based build system
- Supports template projects to help kick-start hybrid application development
- Continuous support of Adobe and hundreds of open source developers
- Lacks strong performance with graphic intensive mobile applications
- At times, it shows a lot of variation in performance, which results in it being unstable
- One of its versions is available free of cost
- Real-time fixes supported by the platform help to solve issues on the app itself
- Includes easy drag-and-drop for several objects, which makes the app development task easy
- The open source version has limited utilities
- Not a good option for development of complex mobile applications
- Developers working on Cordova have direct access to the latest updates from Apache’s team
- With each succeeding version, Cordova gains access to different critical OS enhancements
- Cordova’s performance improves with each of its subsequent enhancements and provides it access to new APIs
- UI and framework-agnostic
- Dependent on developers for all design and architecture based issues
In order to use NativeScript, knowledge of the command line is a must and we need to supply a text editor. NativeScript helps developers get a feel of the end product by providing an interface for demonstrating applications on iOS and Android. Both applications are generated from a single code base; hence NativeScript is a ‘Write-Once-Run-Anywhere’ solution capable of achieving very high performance on both platforms.
- Available completely free of cost as it is open source
- Can be integrated with CocoaPods and Gradle directly, hence letting its developers incorporate Objective-C, native Swift and Java libraries into their NativeScript projects
- Low performance during high traffic
- Uses a customised markup to design its interfaces without CSS3 or HTML5
The author is a B. Tech in electronics and instrumentation engineering. He works on various software automation testing tools and on Android application development. He is currently working as an automation test engineer at Infosys, Pune. He can be reached at email@example.com.