Mobile Application Development From Scratch
The mobile industry is highly developed and the variety of tools is enormous, what makes it really difficult to choose the right tool.
This guide includes a review of the strongest and most popular frameworks in the mobile field today, including focusing on their specialties.
In order to choose the ideal tool you should first know which kind of app you are going to develop. This article is going to be organized by key questions a developer should ask himself before he starts the development.
1) At first, ask yourself if application development is really necessary:
If you already have a site, you can adjust it to the mobile version and spare yourself the development.
There are several options available to display a website in Mobile:
- Web that is not optimized for mobile - The site is built on pixels. In practice there is a scroll down so in order to read you need to move all the time.
- Displays the site in Mobile - The site displays the same content, just in a smaller version, you can zoom out/in the screen by using your fingers.
- Automatic responsive version - The site is built on responsive templates, with the right tools behind the scenes, such as Bootstrap. The site "Order himself" according to the resolution, and the elements are cut automatically depending on the resolution.
- Custom responsive - Create a specific design for the mobile site, remove unnecessary elements. Also decide what will appear first and add elements such as Click to Call, navigation with Waze and etc.
- Custom Mobile - A completely customized version including suitable PSD (Photoshop design file) and building it from scratch.
2) If we decided after all that we wnat to develop an app, ask yourself what is your target platforms?
If you chose IOS the common and the optimal choice is coding with Objective-C in XCode on Mac computer.
For Android the common choice is developing with Java/Javascript and a wide range of environments are available to you (eg Eclipse, Unity 3D).
For Windows Phone / Windows 8 the common choice is programing with C # on VS2015.
3) What type of app would you like to create?
Now it's time to choose whether to develop a mobile application or focus on game development (each group contains various of elements, so let's talk about them separately):
- Mobile Application:
I would say roughly that mobile development is divided almost identically between three categories: Native, Web and hybrid.
Another small percentage of developers are using the fourth option - Native Transformers.
Let’s take a close look on the categories:
Native Apps:
These apps are designed for a particular platform and therefore require specific programming languages and adapted SDKs. Native Applications like xamarin, Appcelerator Titanium, Sencha and Apache Flex allow access to all device capabilities using the latest UI and maintaining optimal performance. The combination of these advantages help in reaching the ultimate user experience. However, there is a drawback. Native apps force the user to develop and maintain two differrent worlds (iOS and Android). Each platform uses different programming languages and different architectures making it difficult to share codes and requires separate specialties developers.
Key Benefits of Native Development are: Best User Experience in developing and providing of smooth animation and quick response. For example, in order to reach Sencha results with HTML5, exceptional Web development skills are needed, while at Native developing, great results are nearly a standard situation.
Hybrid apps:
These apps use an internal browser component and enable Web technologies development such as HTML5, CSS and Javascript. The most popular framework in this area is PhoneGap which allows access to part of the device's APIs along with native-like UI building using third party libraries such as Ionic, jQuery Mobile, Sencha Touch. Other recommended freamworks in this field are Framework7, Xamarin, Ionic, Kendo UI, Mobile Angular UI, Famo.us, Monaca, 5App, Conclusion and much more. The development is very fast and efficient, but the disadvantages are reflected in slower response times, limited access to device capabilities, and UI does not feel like the real thing.
Although Hybrid freamworks usually allow you to access the hardware in some devices (GPS or even the camera’s) it still has a great set of capabilities available only with native code: contacts access,connecting to social networks with details of the device owner, file management, and more.
There are standard solutions, such as PhoneGap or MoSync, containers of pre-ready web applications called Hybrid Web Container. By using these solutions, you can focus on the development of Web applications and only cover them as your Native.
The overall development of Hybrid Container Framework provides benefits of both worlds, Web and native. But In practice, the hybrid solution is not only a combination of the advantages, but also combination of disadvantages.
Let's summarize it:
The main advantages of hybrid:
Full access to the API of the OS.
Distribution of the app in the App Store.
Ease of developing cross platform.
Full control over updates.
The User Experience will mostly given Web capabilities, ie HTML5 / CSS3.
The main disadvantages of hybrid:
- While HTML code is updated automatically, some of the native code depending on the updates of the users. what makes us to support different versions we have no control over them.
- There is a gap between the release time of OS version (eg iOS 6), to the release time of Container version that supports it. It could reach to several months. In extreme cases, functionality can be broken (i.e back support isn’t Apple's specialty) and requires you write your own wrappers, Independent the frameworks.
- You should maintain the custom native codes you develop for each platform (and even different versions of the OS) - So dual coding is required.
Native Transformers:
When you develop with different languages at different environments - you can’t reuse code, even very similar. Native Transformers promise to help in this matter. They suggest you to write your own code once. And it can be shared with intermediate language (usually javaScript or variations of it), while the native Transformer will compile it to a nativ code for various operating systems, and will supply you a skeleton of suitable environment you can continue with. Moreover, some solutions allow you to make changes to the shared code and pass the product to to a specific IDE (eg iOS, Android) without deleting or harm the developments you have already done.
The most common Native Transformers are probably: Appcelerator-Titanium, Adobe Air, Antenna,Telerik Kendo UI, Intel XDK.
Native Transformers drawbacks:
- These solutions are mostly commercial, and the licensees expensive than usual.
- There's dependence on third-party player, his updates, its quality, its financial stability, etc.
- The Intermediate language, its libraries and mostly the graphic design tools are not so standard environment, what complicate the learning Curver.
Cross-platform apps:
Applications that offer significant improvements in performance and user experience thanks to the UI was built by using native elements. however, the access device capabilities, and components such as camera, GPS, and so on is via the API. It creates an abstraction layer above the platform API framework. well known frameworks in the area are Xamarin and Titanium.
After evaluating the apps categories, Let’s continue the guiding questions review:
4) Ask yourself if hardware access is needed:
There are several environmens that allows access to the device’s hardware. The most popular are:
Xamarin, Provides support for hardware features, such as the camera and other sensors.
PhoneGap allows access to hardware features including GPS, accelerometer, camera, sound and more.
Appcelerator can implement most of the hardware advantages, particularly camera and video camera capability.
RhoMobile Allows access to most of the Hardware components eg camera and GPS.
Framework7 supply hardware accelerated performance.
5) Another consideration, is whether the freamwork provides advertising options by commercial entity or it’s necessary to combine them externally.
This factor is decisive beacause it influences directly on financial profit.
There are several commonly used monetization methods you can find at almost any application. Some of the common are:
1) Banners - cover part of the screen at any given time.
2) Interstitial ads(Mostly in games) - full screen ads. Can be displayed between levels.
3) Download Incentives - Reward users for downloading advertised apps.
4) In-App purchases - purchases which made within the mobile application.
Built in Monetization framework can be found at several framworks such as
Unity 3D, Corona SDK, NeoMAD, V-Play.
6) Does your framwork supports social possibilities?
Social possibilities(such as social media buttons) are highly necessary. It provides a quick and easy way to promote your app and brings additional traffic. Furthermore, it allows you to monitor users and follow their movement easily. Beyond that, enables users to be identified quickly without exhausting registration.
Social possibilities comes built-in at some frameworks such as Unity 3D, Intel XDK,Ionic,V-Play.
7) Analytics tools
Once your app is ready, the next step before it goes live is monitoring. namely, following users activities.including frequency of downloads and custom events which allows you defined inside your code which user's actions you want to monitor.(for example, a click on the button Facebook-Connect) and more. There are many software programs which designed for this purpose and the famous are Google Analytics, Flurry, Crashlytics, Segment.io, Appsflyer and more.
8) Game Development Tools:
There are several strong applications in this filed that worth to check out. among them: Marmalade SDK, Unreal Engine, Unity 3D, Corona SDK, App Game Kit, Cocos2d.
Note that Game development is mostly native.
Let's take a closer look at some of them while examining the principles mentioned earlier in this article:
- Unity 3D - Recommended - powerful engine with excellent graphics capabilities. Allows you export your codes to variety of platforms, including iOS, Android, Windows, Web and Linux. Additionally, helps you distribute your game in common stores, get social shares, and track user analytics.
- Cocos2d - This framework designed for building 2D games, demos, and other graphical/interactive applications. The main advantage is flexibility . It supports variety of programming languages such as C++,JavaScript,C#, Xcode,Objective-C and Python. Also allows you to write code once and then reuse it in different frameworks. (eg one code designed for both, iOS and for Android with a separate native adjustments If necessary).
- Corona SDK - cross-platform framework that allows developers to create 2D games and apps up to 10x faster than other platforms. support in-app purchases, a variety of ad networks and other monetization models.
- Unreal Engine 4 - Highly powerful engine for game developing. Deploy to iOS and Android devices. The Marketplace provides a wealth of production-ready game content, asset packs, documentation, sample projects, tutorials, and demos.
Recent Stories
Top DiscoverSDK Experts
Compare Products
Select up to three two products to compare by clicking on the compare icon () of each product.
{{compareToolModel.Error}}
{{CommentsModel.TotalCount}} Comments
Your Comment