I have some thoughts on Android that I want to share...
Market Share
Overall I see a greater number of Android devices, in fact we have 5 Android based devices in my home and only 1 iOS device. Market studies that I have read vary, but shows in some cases a 50-50 marketand in other it shows that Android has a greater market share. Regardless the possibility of using Delphi to write a single application that can target both is very exciting.
Android Versions
Android currently has shipped 7 different, Major product releases. These are separated by different code names. Unlike iOS where most of the users are using the latest version. Knowing this code names will make your life easier as they are referenced in documentation, blog posts, articles, etc...
The 3 most popular (as of July 8, 2013):
Gingerbread - 34.1%
Ice Cream Sandwich - 23.3%
Jelly Bean - 37.9%
Full details on the break down of each code name are market share can be found on the developer.android.com site. Another good tidbit from this site is the various screen resolutions and
form factors you will see when targeting android.
Distribution
Distribution is not locked down like the iOS market.You can distribute you applications in several different ways including
-Google Play Store
-Amazon App Store
-Download from you own site
Design of your application
I love to hear customers talk about just moving an existing windows application to Windows. After talking with them, they quickly realize that the form factor and touch interface requires a redesign to the look and feel of an application. For example, most VCL Delphi Applications I have seen contain a Grid. I rarely see such anything like that on mobile platforms. To help with this mind set switch I would recommend reading a couple of Design Guidelines.
- iOS Human Interface Guidelines
- Android Developer Pattern Guidelines. (Check out other sections as well)
A bit about the internals of Android
At the heart of Android is the Linux Kernel (Version 3.x since Ice Cream Sandwich release).
On top of the Kernel sits the Dalvik Virtual Machine which runs Java Byte Code.
So when it comes to development you have two targeting options.
- Native - Runs at the Linux Kernel Level
- Java Byte Code - Runs in the Dalvik Virtual Machine
Since Delphi is using LLVM for the Android Compiler, applications running will be targeting native.
Java has history of being able to interop between native compiled code, it uses a technology called JNI.
I suspect that Delphi will have some easy way to do JNI since several of the android libraries are based in Dalvik.
Now it's time to wait and see what Delphi's Android support will really shape up to be.
Now it's time to wait and see what Delphi's Android support will really shape up to be.