Look around you and you’ll see a lot of Android phones. In fact, Android has the biggest market share in the smartphone market. People don’t really know much about what happens under the hood. Laymen are excused from this because they will probably not benefit much from having this knowledge. But what about techies? Can we really afford to be equally ignorant about this? I have been fiddling with Android for quite some time now and I thought I should just elucidate a little on the world’s best-selling mobile operating system from a tech point of view.
Myth: You need to spend a lot of time learning Android in order to develop an Android app.
Android is a Linux based operating system for the mobile platform. The libraries and APIs are written in C. As we all know, Android is open-source and the Android Software Development Kit (SDK) allows developers to write software for Android devices in Java. This is very advantageous to developers because it is platform independent, which means that you don’t need to write separate code for different devices. Anyone with a decent knowledge of Java can write a simple app in about 30 minutes. People tend to say that Android is abstruse and you have to be fairly experienced to develop good apps. I don’t think this is fully true. Android framework is clean and friendly. If you spend a little time with it and read a couple of tutorials, you will feel very comfortable.
Myth: Android is only for people who know Java.
What about people who want to code in C/C++? There’s a large chunk of people who have been coding in C/C++ for years and they don’t wanna spend time learning Java. Android has an answer to that. Android Native Development Kit (NDK) allows you to make use of native code and implement your applications in C/C++. Without getting too involved in Java, you can develop all your algorithms in C/C++. You just need a very basic knowledge of Java because you will still need Java wrappers to provide user interface to your app. You can use Java Native Interface (JNI) provided by NDK to access the APIs from your C/C++ code. JNI is like a bridge between Java and C/C++ and APIs are basically things you would want to access on the device like camera, memory, touchscreen etc. If you have your code written in C/C++ and you just want to port it to the mobile platform without much headache, NDK is the way to go. The best part is that there is no installation required for NDK. You just place it along with your SDK and provide the paths in your app. Pretty easy right! You don’t need an Android device to start developing Android apps. Android Emulator provides an environment for you to test your app.
Myth: Android is only for people who are willing to learn Java.
What if I just want to see how good my code is on the mobile platform without touching Java at all? Java mainly provides the user interface to an app. The underlying code can be anything you want. So if you don’t care about the user interface, you can just write C/C++ code and run it on your device. I will not go into the details about how to exactly do it, but it’s very much doable if you spend a little time on the Android developers website.
Having said all this, I also have to say that Android is a bit hacky. It might not be very easy to set up at first. But once you get through it, you’ll have a lot of fun. So there, if you have an Android phone, just hack into it and make it do whatever you want. Happy coding!