Introduction to Android (Lesson 1)
What is Android?
Android is a mobile operating system developed by Google, based on a modified version of the Linux kernel. It is designed primarily for touchscreen mobile devices such as smartphones and tablets. In addition, Google has further developed Android TV for televisions, Android Auto for cars, and Wear OS for wrist watches. Variants of Android are also used on game consoles, digital cameras, PCs and other electronics.
History of Android
Android Inc. was founded in Palo Alto, California, in October 2003 by Andy Rubin, Rich Miner, Nick Sears, and Chris White. The early intentions of the company were to develop an advanced operating system for digital cameras. The company then decided that the market for cameras was not large enough for its goals, it had diverted its efforts to make an operating system for handsets like Symbian. In July 2005, Google acquired Android Inc. for $50 million. Its key employees, including Rubin, Miner, and White, joined Google as part of the acquisition. Then a team led by Rubin started to develop mobile operating system powered by Linux kernel. 'Sooner' the prototype version of the first Android smartphone was made by Blackberry as a result of their research. Then on September 23, 2008, Google released its first commercially available smartphone, the HTC Dream.
Android operating system get numerous updates every year which improves overall system performance and features. In each year new Android release is named in alphabetical order after a dessert or a sugary treat. During its announcement of Android KitKat in 2013, Google explained that "Since these devices make our lives so sweet, each Android version is named after a dessert". Below you can see different versions of Android OS with their code name.
Code name | Version number | Release date |
---|---|---|
Cupcake | 1.5 | April 27, 2009 |
Donut | 1.6 | September 15, 2009 |
Eclair | 2.0 - 2.1 | October 26, 2009 |
Froyo | 2.2 - 2.2.3 | May 20, 2010 |
Gingerbread | 2.3 - 2.3.7 | December 6, 2010 |
Honeycomb | 3.0 - 3.2.6 | February 22, 2011 |
Ice Cream Sandwich | 4.0 - 4.0.4 | October 18, 2011 |
Jelly Bean | 4.1 - 4.3.1 | July 9, 2012 |
KitKat | 4.4 - 4.4.4 | October 31, 2013 |
Lollipop | 5.0 - 5.1.1 | November 12, 2014 |
Marshmallow | 6.0 - 6.0.1 | October 5, 2015 |
Nougat | 7.0 - 7.1.2 | August 22, 2016 |
Oreo | 8.0 - 8.1 | August 21, 2017 |
Android Architecture
- Hardware
- Software
Android operating system mainly supports ARM (ARMv7 සහ ARMv8-A) Hardware platforms. Newly released android versions also support for x86, MIPS, MIPS64 and x86-64 CPU Architectures.
Android is madeup of 6 major software components called Android software stacks.
Those are,
- Linux Kernel
- Libraries
- Android Runtime
- Application Framework
- Applications
- Linux Kernel
- /boot - This is the partition that has all the data that is necessary for the phone to boot. It includes the kernel and the RAMDISK.
- /system - This partition basically contains the entire operating system, except the kernel and the RAMDISK.
- /recovery - The recovery partition can be considered as an alternative boot partition that lets you boot the device into a recovery console for performing advanced recovery and maintenance operations on it. You can go into recovery mode on your Android device by pressing Power button + Volume up + Home at startup. There may be different key combinations for your device.
- /data - This is where your contacts, messages, settings, and apps that you have installed go. Wiping this partition essentially performs a factory reset on your device.
- /cache - This is the partition where Android stores frequently accessed data and app components.
- /misc - This partition contains miscellaneous system settings in form of on/off switches.
- /sdcard - This is not a partition on the internal memory of the device but rather the SD card. In terms of usage, this is your storage space to store your media, documents, downloads, pictures, videos, ROMs etc.
- /sd-ext - This is not a standard Android partition, but has become popular in the custom ROMs. Apps like App2SD use this partition to store applications on external storage space.
- Hardware Abstraction Layer (HAL)
- Libraries
- Bionic C Library - Is the standard C library developed by Google for the Android operating system. It includes libc, libdl, libm and libpthread.
- Media Libraries - A standard library that need to play video and audio.
- 3D Libraries - Includes OpenGL ES library that need for 3D rendering.
- WebKit - It's a rendering engine for web pages. Based on Chromium open source project.
- SQLite - It's a light weight and efficient relational database engine.
- Android Runtime
- Application Framework
- Activity Manager - Controls everything in Application life cycle.
- Content Provider - Helps to store and share data.
- Resource Manager - Provide resources such as strings, colors, styles, user interfaces etc. that is needed during execution of the app.
- Notification Manager - Helps to show notifications to the user.
- View System - This includes UI components of the android OS.
- Applications
Kernel is like a heart of an operating system. Because, Process management, Memory management, Device management and all these stuff are handled by the kernel. Android is powered by very powerful Linux kernel. Because of this, Android can support a wide variety of devices and it can handle network more efficiently.
Inside the flash storage where Android is installed, we can see several partitions.
The hardware abstraction layer (HAL) provides standard interfaces that expose device hardware capabilities to the higher-level Java API framework. It loads and executes necessary library modules that need to interact with the hardware devices.
Android includes standard C/C++ libraries that mostly need for developers.
Android runtime is a application runtime environment used by Android operating system. Older versions prior to Android lollipop used Dalvik as process virtual machine to run Android apps. Normally android apps are developed in Java programming language. During the compilation process, the code gets compiled into Java bytecode and then it again gets compiled into Dalvik bytecode. This Dalvik bytecode is a highly optimized code specially made to run on Dalvik virtual machine. This Dalvik bytecode is stored inside the app in .dex and .odex formats. This bytecode again needed to compile into machine language in order to run on the native platform. In Dalvik virtual machine this is done by Just-In-Time (JIT) compiler. JIT compiler translates bytecode into machine language during runtime. Android lollipop and releases after it uses Android runtime as it's runtime environment. The specialty of Android runtime is that it converts the whole app into native machine language code during the installation process. Android Nougat and releases after it translate only part of the app into machine language to speed up the installation process. This is done by Ahead-of-Time compiler. Because of this, Android has become much faster and smoother now. But the extra storage space is needed to store converted machine language code. It's one disadvantage of this method. AOT compiler also helps to save battery life of Android devices.
Android framework is used to access high-level services in the Android operating system. It is written in Java and commonly referred to as Android SDK (System Development Kit). Application developers can use Android SDK to call high-level system calls. Some of the services included in Android framework are listed below.
Top of the software stack of Android OS is applications. All the system apps such as Email, SMS messaging, calendars, internet browsing, contacts and third party applications are in this layer of software stack.
For more info, watch the following video from Android Developers.
මොකක්ද මේ Android?
Android කියන්නේ Google සමාගම මගින් Develop කරන Linux පාදක කරගත්ත මෙහෙයුම් පද්ධතියක්. ප්රධාන වශයෙන් Android මෙහෙයුම් පද්ධතිය නිර්මාණය වෙලා තියෙන්නේ ස්පර්ශක සංවේදී තිර තිබෙන Smartphone සහ Tablet වැනි ජංගම උපකරණ සඳහා තමයි. මිට අමතරව Android මෙහෙයුම් පද්ධතිය Android TV නමින් Smart TV සඳහාද, Android Auto ලෙස වාහන වලද, Android Wear නමින් Smart Watch වල මෙහෙයුම් පද්ධතිය ලෙසද විවිධ ප්රභේධ වලින් නිර්මාණය කර තිබෙනවා. තවද Gaming consoles, Digital cameras, PCs වල Android මෙහෙයුම් පද්ධතිය යොදාගන්නවා.
Android ඉතිහාසය
වර්ෂ 2003 දී Palo Alto, California හිදී Andy Rubin, Rich Miner, Nick Sears සහ Chris White යන පුද්ගලයන්ගේ ප්රධානත්වයෙන් Android Inc. යන සමාගම පිහිටුවනවා. ඔවුන්ගේ මූලික අරමුණ වුණේ ජංගම උපකරණ සඳහා මෙහෙයුම් පද්ධතියක් නිර්මාණය කිරීම. මුලදී ඔවුන්ගේ අරමුණ වුණේ Digital camera සඳහා මෙහෙයුම් පද්ධතියක් නිර්මාණය කිරීම. නමුත් Digital camera සඳහා වන වෙළඳපොළ අඩු නිසා ඔවුන් තීරණය කරනවා Mobile phone OS එකක් සංවර්ධනය කිරීමට. පසුව වර්ෂ 2005 ජූලි වලදී Google සමාගම විසින් Android Inc. සමාගම ඩොලර් මිලියන් 50 කට මිලදී ගන්නවා. Rubin, Miner සහ White, Google සමාගම සමඟ සම්බන්ධ වන අතර පසුව Rubin ගේ ප්රධානත්වයෙන් Linux පාදක කර ගනිමින් මෙහෙයුම් පද්ධතියක් නිර්මාණය කෙරෙනවා. එහි ප්රතිඵලයක් ලෙස 'Sooner' නමින් මුලකෘතියක් ලෙස Android බලගැන්වුණු Blackberry දුරකථනය එළිදැක්වෙනවා. වර්ෂ 2008 සැප්තැම්බර් 23 වන දින පළමු වාණිජ වශයෙන් වන Android දුරකථනය HTC Dream එළිදක්වනු ලබනවා.
Google සමාගම හැම අවුරුද්දකම වගේ අලුත් විශේෂාංග එක් කරමින් Android මෙහෙයුම් පද්ධතිය යාවත්කාලින කරනවා. මෙම යාවත්කාලින කරන Android සංස්කරණ ඉංග්රීසි හෝඩිය අනුව නම් කිරීම විශේෂත්වයක්. 2013 Android KitKat සංස්කරණය එළිදක්වන අවස්ථාවේදී Google සමාගම පැවසුවේ මෙම Android ස්මාර්ට් දුරකථන අපගේ ජිවිත තවත් රසවත් කරන නිසා Android සංස්කරණ නම් කිරීමට අතුරුපසවල නම් යොදාගන්නා බවයි. එලෙස නම් කරන ලද Android සංකේත නාම පහතින් දැක්වේ.
Code name | Version number | Release date |
---|---|---|
Cupcake | 1.5 | April 27, 2009 |
Donut | 1.6 | September 15, 2009 |
Eclair | 2.0 - 2.1 | October 26, 2009 |
Froyo | 2.2 - 2.2.3 | May 20, 2010 |
Gingerbread | 2.3 - 2.3.7 | December 6, 2010 |
Honeycomb | 3.0 - 3.2.6 | February 22, 2011 |
Ice Cream Sandwich | 4.0 - 4.0.4 | October 18, 2011 |
Jelly Bean | 4.1 - 4.3.1 | July 9, 2012 |
KitKat | 4.4 - 4.4.4 | October 31, 2013 |
Lollipop | 5.0 - 5.1.1 | November 12, 2014 |
Marshmallow | 6.0 - 6.0.1 | October 5, 2015 |
Nougat | 7.0 - 7.1.2 | August 22, 2016 |
Oreo | 8.0 - 8.1 | August 21, 2017 |
Android Architecture
- Hardware
- Software
මෙහෙයුම් පද්ධතිය ප්රධාන වශයෙන් ARM (ARMv7 සහ ARMv8-A) Hardware platform එක සඳහා සහාය දක්වයි. මේ අතර මෑත කාලයේදී නිකුත් වූ Android සංස්කරණ x86, MIPS සහ MIPS64, x86-64 යන CPU Architectures සඳහාද සහාය දක්වනු ලබයි.
මෙහෙයුම් පද්ධතිය ප්රධාන වශයෙන් Software ස්තර 5කින් සමන්විත වේ.
ඒවා නම්,
- Linux Kernel
- Libraries
- Android Runtime
- Application Framework
- Applications
- Linux Kernel
- /boot - මෙහි මෙහෙයුම් පද්ධතිය boot කිරීමට අවශ්ය Kernel එක සහ RAMDISK එක ඇත.
- /system - මෙහි ඇත්තේ Kernel එක සහ RAMDISK එක හැර මෙහෙයුම් පද්ධතියේ අනෙකුත් කොටස්ය. Android user interface, Pre-installed applications ද මෙහි ඇතුලත්.
- /recovery - මෙය තවත් Boot partition එකක් ලෙස ක්රියා කරනව. මෙහි තිබෙන Recovery console එක මෙහෙයුම් පද්ධතිය Recovery කිරීම, යාවත්කාලින කිරීම සහ නව මෙහෙයුම් පද්ධතියක් Flash කිරීමේදී උපකාරී වෙනවා. ඔබේ Android device එක On කිරීමේදී Power button + Volume up + Home ඔබාගෙන සිටීමෙන් Recovery mode එකට පිවිසිය හැක.
- /data - ඔබගේ Contacts, Messages, Settings, Installed applications වගේ දත්තයන් ගබඩා කර තබන්නේ මෙම Partition එක තුල. ඔබ Device එක Factory reset කරන අවස්ථාවේදී මෙහි වන සියලු දත්තයන් මැකී යයි.
- /cache - මෙහි System එකෙන් සහ Apps වලින් නිරන්තරයෙන් යොදාගන්නා දත්ත ඉක්මනින් ලබාගැනීමේ අරමුණෙන් ගබඩා කර තබනු ලබයි.
- /misc - මෙහි ඇතැම් System settings ගබඩා කරයි.
- /sdcard - මෙහි ඔබේ Photos, Music, Videos වැනි දෑ ගබඩා කරයි. බොහෝ විට Internal Storage එක ලෙස සලකන්නේ මෙම Partition එකයි. මෙය අප බහිරව ඇතුලත් කරන Sdcard partition එක නොවන අතර සමහර යෙදුම්, Settings සහ Data මෙම Partition එක තුල ගබඩා කරයි. බාහිරව ඇතුලත් කරන Sdcard එක සඳහා වෙනමම Partition එකක් ඇත.
- /sd-ext - මෙය සම්මත Android partition එකක් නොවන අතර Custom ROM වල බෙහෙවින් ප්රචලිතය. App2SD වැනි යෙදුම් මගින් External sdcard එකක Apps install කිරීමේදී මෙම Partition එක යොදාගනී.
- Hardware Abstraction Layer (HAL)
- Libraries
- Bionic C Library - Google ආයතනය විසින් Android සදහාම දියුණු කරන ලද Standard C Library එකකි (libc, libdl, libm සහ libpthread වලින් සමන්විතයි).
- Media Libraries - Video සහ Audio Play කිරීමට සහ Record කිරීමට අවශ්ය Libraries වලින් සමන්විතයි.
- 3D Libraries - Hardware accelerated 3D rendering කිරීම සඳහා අවශ්ය වන OpenGL ES Library එක ඇතුලත් කර ඇත.
- WebKit - Web පිටු Render කිරීමට අවශ්ය වන Rendering engine එකකි. Chromium open source project එක මත පදනම් වී ඇත.
- SQLite - ඉතා ප්රබල සහ බරින් අඩු Relational database engine එකකි.
- Android Runtime
- Application Framework
- Activity Manager - Application life cycle එකට අදාළ සියලුදේ මෙමගින් පාලනය කරයි.
- Content Provider - Application අතර දත්ත හුවමාරු කිරීමේදී මෙය යොදා ගනී.
- Resource Manager - Application එකට අවශ්ය වන strings, colors, styles, user interfaces වැනි දෑ ලබා ගැනීමට උපකාරී වේ.
- Notification Manager - User හට Notifications පෙන්වීමට උපකාරී වේ.
- View System - Application එක තුළ User interfaces draw කිරීමට අවශ්ය වන View controllers අඩංගු Java library එකකි.
- Applications
Kernel එක හෙවත් මදය කියන්නේ ඕනම මෙහෙයුම් පද්ධතියක හදවත❤ වෙගේ දෙයක්. මොකද කියනවනම් Process management, Memory management, Device management වගේ දේවල් සිදුවන්නේ මෙම Kernel එකෙන් වීම. ඉතින් Android මෙහෙයුම් පද්ධතිය ඉතා ප්රභල Linux Kernel එකෙන් බලගැන්විලා තියනව. Linux Kernel එක භාවිතා කිරීම හේතුවෙන් Android මෙහෙයුම් පද්ධතියට පුළුල් පරාසයක උපාංග සඳහා සහාය දැක්වීමට හැකියාව ලැබී ඇති අතර Networking වැනි දෑ කාර්යක්ෂමව කිරීමට හැකි වී තිබෙනවා.
Android මෙහෙයුම් පද්ධතියේ අනෙත් Linux based මෙහෙයුම් පද්ධති මෙන් Partition කිහිපයකට පද්ධතිය වෙන්කර තිබෙනවා.
දෘඩාංග වල පවතින හැකියාවන් High level java API එකට නිරාවරණය කිරීමට උපකාරී වන Interface එකකි. Java API එක මගින් දෘඩාංග භාවිතා කිරීමට ප්රවේශය ඉල්ලූ විට මෙමඟින් අවශ්ය Library modules load කර දී පහසුකම් සලසයි.
මෙහෙයුම් පද්ධතිය Developersලට ගොඩක් උපකාරීවන Standard C/C++ Libraries වලින් සමන්විතයි. ඒවායින් කිහිපයක් පහත දක්වා ඇත.
Android Runtime කියන්නේ Android application run වෙන Runtime environment එක. Lollipop වලට කලින් version වල Apps run වුණේ Dalvik කියන Process Virtual Machine එක තුළ. සාමාන්යයෙන් Android application නිර්මාණය කරන්නේ Java ක්රමලේඛන භාෂාවෙන්. මෙය Compile කිරීමේදී Java Bytecode එකට Compile වී නැවත Dalvik bytecode එක බවට පරිවර්තනය වේ. මෙසේ පරිවර්තනය කරන Bytecode එක .dex සහ .odex යන Extensions වලින් ගබඩා කරයි. නමුත් Application run වීමේදී මේවයේ ඇති Instructions machine language එකට පරිවර්තනය කිරීමට අවශ්යයි. Dalvik virtual machine එකේ මෙය සිදුකරන්නේ Just In Time compiler (JIT) කියන Compiler එක මගින්. JIT මගින් Android application එක run වෙන මොහොතේම Compile කරයි. නමුත් Android lollipop වලින් ඇරඹෙන අලුත් Android සංස්කරණ වල භාවිතා වන්නේ Android runtime කියන Runtime environment එක. මෙහි ඇති විශේෂත්වය නම් මෙමගින් Application එක run වීමට ප්රථම එහි ඇති සියලුම Instructions, machine language එකට පරිවර්තනය කිරීමයි. මෙය සිදුකරන්නේ Ahead-of-time compiler එක මගින්. මේ හේතුව නිසා Android lollipop සහ ඊට පසුව වන Android සංස්කරණ වල Application ඉතාමත් වේගයෙන් සහ සුමට ලෙස run වෙනවා බලාගන්න පුළුවන්. නමුත් Machine language එකට පරිවර්තනය කරන ලද Instructions ගබඩා කිරීමට අමතර ඉඩක් වැයවීම මෙහි එක් අවාසියක්. AOT භාවිතය නිසා Application run වෙන වේගය, ක්ෂමතාවය වැඩිකරගන්න වගේම Battery භාවිතයද අඩු කරගන්න හැකි වී තිබෙනවා.
Android framework යනු Android operating system එක තුල පවතින High level services access කිරීමට උපකාරීවන Java පාදක කරගත්ත Framework එකක්. මෙය Android SDK (System Development Kit) ලෙසද හඳුන්වයි. Application developersල හට මෙහි පවතින Services භාවිතයෙන් Application develop කළ හැක. ප්රධාන වශයෙන් Android framework එක තුල පහත සඳහන් සේවාවන් පවතී.
මෙහෙයුම් පද්ධතියේ ඉහලින්ම ඇත්තේ Application ස්ථරයයි. Email, SMS messaging, calendars, internet browsing, contacts වැනි System apps මෙන්ම Third party applications ද ඇත්තේ මෙම ස්ථරය තුළයි.
Android architecture ගැන වැඩිදුර තොරතුරු පහත Video එකෙන් බලාගන්න පුළුවන්.
Comments
Post a Comment