Pada topic kali ini Belanja Pagi akan membahas tentang Mengenal dan Memahami Sistem Operasi Android. Walaupun Android kini telah diketahui hampir semua orang tetapi saya yakin masih ada yang belum Mengenal dan Memahami Sistem Operasi Android secara keseluruhan.
Langsung saja,
Android merupakan Sistem Operasi dari Google dimana awalnya, Google Inc. membeli Android Inc. yang merupakan pendatang baru yang ditujukan untuk perangkat mobile seperti Ponses atau Tab. Android berjalan pada prosesor dengan arsitektur
ARM, MIPS dan pada versi terbaru 4.0(Ice Cream Sandwitch) Android juga telah mendukung arsitektur x86 dari Intel.
Android berjalan pada kernel Linux dengan menggunakan berbagai macam library. Androidd ditulis dengan menggunakan bahasa C. Aplikasinya berjalan pada application framework yang dibangun dengan menggunakan Java dengan memanfaatkan Apache Harmony sebagai compatible java library-nya.
Semua aplikasi Android berjalan pada virtual machine yang bernama Dalvik, dimana dalvik inilah yang bertugas untuk melakukan penterjemahan Java Bytecode menjadi Dalvik Dex Code (Dalvik-executable).
Dalvik merupakan virtual machine yang menjadi layer/lapisan antara aplikasi dan system operasi. Dimana di dalam file aplikasi yang memiliki ekstensi .apk terdapat beberapa tipe file, diantaranya
resource, assets, xml dan
dex.
Nah file dex inilah yang asalnya deprogram degnan menggunakan bahasa Java. File dex ini akan dijalankan oleh
Dalvik Virtual Machine untuk melakukan berbagai macam aktifitas, mulai dari menampilkan User Interface, akses Internet, menjalankan audio, memanggil kamera, dan sebagainya. Semua akses yang dilakukan oleh aplikasi tersebut harus melalui Dalvik Virtual Machine terlebih dahulu.
Jadi boleh kita katakana kalau file dengan ekstensi .dex tersebut adalah file executable untuk Android, yang bila kita berbicara tentang system operasi windows maka file .dex sama seperti file .exe pada windows.
Dalvik Cache, file .apk sebenarnya merupakan file arsip dengan format zip yang dirubah namanya. Seperti kita ketahui, untuk mengakses konten/file yang berbeda pada file zip, kita harus melakukan unzip terlebih dahulu, Hal ini akan menyebabkan waktu untuk mengakses data di dalamnya menjadi lama, karena itu Dalvik memiliki fasilitas untuk melakukan
cache, dimana file .dex yang berada dalam .apk tersebut akan di
unzip dan disimpan dalam direktori
Dalvik-Cache yang biasanya berlokasi di
“/data/dalvik-chache”.
Proses unzip file .dex tersebut akan dilakukan ketika user melakukan instalasi data .dex pada file .apk, tapi akan langsung mengaksesnya di dalam dalvik-cache.
Filesystem, Android bersandar pada kernel Linux, jadi struktur file yang dignakan juga sama persis dengan apa yang ada pada linux, tapi mungkin para pengguna Android tidak menyadarinya. Seperti halnya linux, root directory berada pada “/”, semua filesystem/partisi di mount pada sebuah direktori. Berikut adalah beberapa filesystem yang umumnya dimiliki dalam system operasi Android :
- Root
- System
- Data
- Boot
- SDCard
- SD-Ext
- Dev, Tmp, Proc
Perhatikan penjelasan dari ke tujuh filesystem dibawah ini :
Mount Point : /
Device : Linux Kernel, RAM
Layaknya linux, semua filesystem akan berada di dalam Root. Tidak seperti Windows yang memilah-milahnya ke dalam drive. Dalam linux semua device dapat diakses melalui filesystem dan menggunakan system stream, baik itu penyimpanan, display, ataupun input dan output device.
2.
Mount Point : /system
Device : Internal Memory
Partisi ini berisi file-file system, dimana file-file system operasi Android dan aplikasi-aplikasi bawaannya disimpan. Partisi system ini selalu disimpan dalam Internal Storage (storage pada ponsel), dan tidak dapat diubah isinya kecuali telah dilakukan rooting. Berikut adalah beberapa file-file yang berada pada partisi ini :
a. /data/app – Berisi file-file .apk dari aplikasi-aplikasi yang diinstal, baik itu dari market atau dari aplikasi yang diinstall secara manual.
b. /data/data – Berisi file-file data aplikasi, baik itu aplikasi system ataupun yang diinstall oleh user. Isi direktori ini memuat berbagai macam data yang disimpan oleh aplikasi, seperti save game, database (sqlite), juga file-file assets dan resource dari aplikasi tersebut. Direktori inilah yang biasanya membesar dan bila kita menginstall banyak aplikasi, maka Low Disk Space biasanya muncul dikarenakan isi direktori ini sudah terlalu besar.
c. /data/dalvik-cache – Merupakan tempat penyimpanan file-file .dex untuk dijalankan secara langsung oleh dalvik virtual machine.
Mount Point : /boot
Device : Internal Memory
Partisi ini memuat Kernel Linux dan merupakan partisi awal yang akan menerima sinyal booting dari device. Kernel inilah yang secara langsung mengakses hardware pada device kita.
Mount Point : /sdcard, /mnt/sdcard
Device : MMC / External Storage
Layout : FAT32
Berbeda dengan partisi-partisi lainnya. Partisi ini adalah area bebas, dimana kita dapat melakukan perubahan sesuai dengan keinginan. Kita dapat menyimpan lagu, foto, dan video di dalamnya, kita juga dapat menggunakannya untuk penyimpanan backup data, dan dapat juga digunakan sebagai USB drive.
Mount Point : /sd-ext
Device : MMC / External Storage
Layout : EXT2. EXT3, EXT4
Merupakan modifikasi yang bisa dilakukan pada Custom ROM dimana bila internal Memory tidak mencukupi untuk memuat data-data penting system, maka dilakukanlah pem-partisi-an pada memory card kita. Dimana memory card kita akan dibagi menjadi 2 partisi, partisi pertama berformat FAT32 yang akan dijadikan sebagai /sdcard, dan partisi kedua berformat EXT(x).
Inilah kehebatan Linux dan Android, dimana device yang memiliki umur yang tua yang tidak dapat lagi memuat system Android yang semakin hari semakin berukuran besar dan tidak dapat dimuat di dalam Internal Memory yang memiliki keterbatasan ukuran, dapat tetap mengikuti perkembangan zaman.
SD-EXT ini memanfaatkan fasilitas Symlink yang didukung oleh Linux, dimana kita dapat melakukan symbolic link (memetakan) suatu file atau direktori dari satu partisi menuju partisi lainnya. Contohnya, kita memiliki direktori /sd-ext/app_s pada SD-EXT, dan lazimnya semua aplikasi system disimpan dalam /system/app, maka kita dapat melakukan symlink dari /sd-ext/app_s menuju /system/app, sehingga ketika system mengakses file/direktori dari /system/app maka system akan membaca file/direktori itu dari /sd-ext/app_s.
Menakjubkan Bukan?. Beberapa pengembangan SD-EXT ini telah dilakukan oleh beberapa developer dan custom-ROM chef, seperti app2sd, data2sd, dan Modifikasi yang saya buat sendiri AD2SDX ( Lihat di XDA-Developers ). Dimana mod-mod tersebut memiliki fungsinya masing-masing yang sebenarnya memiliki tujuan yang sama, yaitu memanipulasi filesystem yang terbatas agar dapat memanfaatkan penyimpanan data system di dalam External Memory.
Mount Point : /dev, /tmp, /proc
Device : Linux Kernel, RAM
Direktori-direktori tersebut bukanlah merupakan Storage, tapi merupakan virtual. dimana /dev merupakan direktori yang memuat semua stream hardware, /tmp merupakan penyimpanan temporary pada ram, dan /proc merupakan direktori untuk menyimpan informasi proses yang berjalan.
Seperti halnya linux pada PC, semua akses aplikasi menuju hardware dapat dilakukan dengan mengakses stream pada /dev, seperti halnya kita mengakses file biasa. Kita dapat mengakses framebuffer display secara langsung pada file /dev/graphics/fb0, atau mengakses input device secara langsung pada /dev/input. Sistem Android mengakses hardware melalui /dev ini, dimana /dev ini lah yang diatur oleh Kernel Linux.
Kita juga dapat mengetahui ID suatu proses dan proses apa saja yang sedang berjalan pada direktori /proc. dan dapat juga menyimpan file temporary pada direktori /tmp untuk dilakukan proses selanjutnya.
Hanya saja direktori-direktori ini hanya dapat diakses bila Anda memiliki permission root.
Hal Lain yang mengagumkan dari system operasi Andorid ini adalah Bila kita tahu bahwa Android berjalan pada Linux Kernel, maka mungkin terbesit di pikiran kita, apakah mungkin untuk menjalankan aplikasi-aplikasi linux di dalam Android?.
Tentu saja mungkin, bahkan bisa dibilang bisa. bila Kita mau melakukan compile pada source code program yang ingin kita jalankan, maka semuanya mungkin. Beberapa contoh yang telah sukses diantaranya menjalankan lighttpd+php pada Android ( Webserver di Ponsel Kita? , bukan hayalan ), SSH Server, mc, Atau bahkan X-Server dengan GUI Gnome dan Aplikasi-aplikasinya. Ya silahkan kalian cari di Google (apa sih yang gak ada di google dalam dunia IT)..
Benarkah? Ya, Bukan hanya mungkin, Hal ini telah diimplementasikan oleh para developer terutama developer dari
XDA-Developers. Walaupun Android hanya mendukung
libc minimalis yang mengimplementasikan
bionic, tapi
GLibc ( Libc lengkap berlisensi GNU ) telah bertebaran di internet dan siap untuk digunakan.
Jadi, Android merupakan system operasi untuk device yang sangat menakjubkan, dimana tingkat kompatibilitasnya sangat tinggi dan yang lebih mengagumkan, kita dapat melakukan kostumisasi yang tak pernah habis untuk ponsel kita (jika ada kemauan dan keberanian).
Semoga bermanfaat yah..
Sumber : Unikom, Google for many blog referensi.