images
Android adalah sistem operasi berbasis kernel Linux yang berjalan untuk perangkat mobile, seperti smartphone dan tablet phone. Android OS berjalan pada arsitektur prosessor berjenis ARM (Application, Realtime, Microcontroller ), MIPS ( Microprocessor without Interlocked Pipeline Stages) dan x86 dari Intel ( khusus Android ICS ke atas ). Sama halnya dengan OS Linux, 
Android agar bisa berjalan lancar perlu didukung dengan berbagai macam library dan khusus Android, segala perintah aplikasi berjalan pada virtual machine yang dinamakan Dalvik.


Dalvik

Dalvik merupakan virtual machine yang menjadi layer/lapisan antara aplikasi dan sistem operasi. Dimana di dalam file aplikasi yang memiliki ekstensi .apk terdapat beberapa tipe file, diantaranyaresource, assets, xml dan dex. Nah file dex ini lah yang asalnya diprogram dengan 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.

Arsitektur Android
file dengan ekstensi .dex tersebut adalah file executable untuk Android, yang bila kita berbicara tentang sistem 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 kontent/file yang berada 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-cache“.

Proses unzip file .dex tersebut akan dilakukan ketika user melakukan instalasi aplikasi yang dimaksud. Sehingga ketika user membuka aplikasi tersebut, sistem tidak akan mengakses data .dex pada file .apk, tapi akan langsung mengaksesnya di dalam dalvik-cache.

Filesystem
Android bersandar pada kernel Linux, jadi struktur file yang digunakan 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 sistem operasi ini:

  • Root
  • System
  • Data
  • Boot
  • SDCard
  • SD-Ext
  • Dev, Tmp, Proc

Root

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 sistem stream, baik itu penyimpanan, display, ataupun input dan output device.

System
Mount Point: /system
Device: Internal Memory
Partisi ini berisi file-file system, dimana file-file sistem 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:

  • /system/app – Dalam direktori ini terdapat file-file .apk untuk aplikasi system, seperti Phone Dialer, Launcher, IME/Keyboard, Mail, SMS, Settings, dsb.
  • /system/frameworks – Dalam direktori ini terdapat file-file frameworks dengan ekstensi .jaryang menyimpan fungsi-fungsi java yang diakses oleh aplikasi android, baik itu aplikasi system atau aplikasi yang diinstall oleh user.
  • /system/libs – Direktori ini berisi library-library dan library kernel yang ditulis dengan menggunakan bahasa C (Native), dan memiliki ekstensi .so. Android juga mendukung pembangunan aplikasi dengan menggunakan bahasa C (Native) dengan menggunakan Android NDK (Native Development Kit), dan mendukung library-library C seperti layaknya linux. hanya saja dukungannya lebih minimalis, dimana libc yang digunakan adalah libc bionic yang telah dimodifikasi agar lebih minimalis. Tapi sebenarnya kita masih bisa memanfaatkan Glibc untuk berjalan pada Linux ini, hanya harus dilakukan compile sendiri.
  • /system/bin, /system/xbin – Merupakan direktori yang berisi file-file executable berbasis linux, bila .dex akan berjalan pada dalvik-cache, file-file di dalam direktori ini akan berjalan langsung di atas kernel linux. Linux pada Android mendukung perintah-perintah dasar yang biasa digunakan pada shell di linux, seperti ls, mv, cp, cat, df, dsb. Perbedaanya, bila di linux semua perintah tersebut merupakan satu executable tersendiri, sedangkan pada linux semua perintah tersebut dikerjakan oleh satu executable yang bernama busybox.
  • /system/etc – Direktori ini berisi file-file konfigurasi system dan konfigurasi driver, mulai dari setting gps, wifi networking, database apn, sampai pengaturan volume untuk audio.
  • /system/customize, /system/fonts, /system/media, /system/usr – Semua direktori ini berisi file-file untuk kustomisasi sistem, seperti gambar animasi boot, huruf untuk tampilan, wallpaper, ringtone dan audio bawaan, juga beberapa layout keyboard dan lokalisasi bahasa.

Data
Mount Point: /data
Device: Internal Memory

Berbeda dengan system. Partisi data ini merupakan partisi untuk menyimpan data-data yang selalu berubah-ubah. Semua aplikasi yang diinstal oleh user akan disimpan pada partisi ini. Ketika pengguna melakukan wipe data ( reset to factory ), partisi ini akan dibabad habis (di format), sehingga data-data aplikasi yang diinstall, kontak, data sms, dan sebagainya akan hilang. Tapi sistem masih tetap bisa berjalan dikarenakan wipe data tidak akan menghapus partisi system.

Berikut adalah beberapa direktori yang berada pada partisi data ini:

  • /data/app – Berisi file-file .apk dari aplikasi-aplikasi yang diinstall, baik itu dari market atau dari aplikasi yang diinstall secara manual.
  • /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.
  • /data/dalvik-cache – Merupakan tempat penyimpanan file-file .dex untuk dijalankan secara langsung oleh dalvik virtual machine.

Boot
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.

SDCard
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 keiinginan. Kita dapat menyimpan lagu, foto, dan video di dalamnya, kita juga dapat menggunakannya untuk penyimpanan backup data, dan dapat juga digunakan sebagai USB drive.

SD-EXT
Mount Point: /sd-ext
Device: MMC / External Storage
Layout: EXT2, EXT3, EXT4

Merupakan modifikasi yang bisanya dilakukan pada Custom ROM, dimana bila Internal Memory tidak mencukupi untuk memuat data-data penting sistem, 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 hebatnya Linux dan Android, dimana device yang memiliki umur yang tua yang tidak dapat lagi memuat sistem 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 sistem disimpan dalam/system/app, maka kita dapat melakukan symlink dari /sd-ext/app_s menuju /system/app, sehingga ketika sistem mengakses file/direktori dari /system/app sistem akan membaca file/direktori itu dari /sd-ext/app_s. Cerdik kan?. Beberapa pengembangan SD-EXT ini telah dilakukan oleh beberapa developer dan custom-ROM chef, seperti app2sddata2sd, dan Modifikasi yang saya buat sendiriAD2SDX ( 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.

Dev, Tmp, Proc
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 Lebih Hebat
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 diGoogle

Apa Benar Mungkin? 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.

PUSING ISTILAH ANDROID

APK == Android Package, kyk IPA di iPhone (buat pngguna iPhone), SISdi Symbian s60 (ga tau sih skrg masih sis ap ngga), atau JAR di BB(buat pengguna BB) dan java based devices lainnya.. intinya, file2 dgnekstensi .apk bisa digunakan untuk menginstall aplikasi di androiddevice.. BRICK(ed) == kondisi dmana device sudah tidak bisa di-recover,sehingga bisa dianggap seperti batu-bata (brick) yg dapat digunakanuntuk ngelempar anjing (kalau dbutuhkan)..

adb = command buat ngejembatani perintah di android lewat pc..klo adb shell termasuk bagiannya..extensi command adb ada banyak bro, seperti adb push, adb pull, adb install dll…syarat adb bisa jalan = driver adb mesti sdh terpasang di pc…biasanya di device manager (windows) akan terlihat andoid adb composite device, driver adb biasanya dari vendor pembuat devicenya..klo nexus, htc magic, dream bisa pakai driver bawaan usb…kalo motorola milestone bisa dari cd bawaannya atau pakai motorola software update…

adb.exe = bisa di ambil dari sdk (dah include didlm android sdk)..ada di folder tools, untuk mengetahui fungsi command adb bisa dgn mengetik “adb help”

adb shell logcat = buat mengetahui proses yg terjadi diandroid, berguna banget saat experiment flashing rom…

IMAP = Internet Message Access Protocol, salah satu protocol untuk retreive email selain POP3

POP3 = Post Office Protocol 3, salah satu protocol TCP/IP port 110 dalam menarik email

Widget = salah satu aplikasi yang GUI nya lebih bersifat interaktif

GUI = Graphical User Interface , interface aplikasi yang lebih bersifat graphic (gambar ? )

GMS = Google Market Services, tempat download nya aplikasi2 di Android (kayak apps store di iphone, appworld di BB)

Root = super user di salah OS (dalam hal ini Android)

nge-root = proses untuk merubah privilage dari user biasa jadi root

Apps2SD = Proses memindahkan/menyimpan aplikasi ke SDcard selain ke memori internal,

AOSP = Android Open Source Project,

Boot = Proses menghidupkan handheld,

Bootloader = gabungan SPL dan IPL yg menjadi dasar dr sebuah device,

Bootloader Mode – FASTBOOT load = Tombol Camera + Power, pada mode boot ini, kita bisa meng-install image sebuah sistem yang ada/ditaruh di SDcard dengan menekan tombol Power lagi,

Cache2SD = Proses memindahkan/menyimpan Cache dari ROM ke SDcard,

Diagnostic Mode = Tombol Capture + Power. mode boot untuk test ( pake tombol volume untuk pilih item ),

Normal Mode : cara normal menghidupkan handheld,

OTA : Over The Air, suatu metode pengiriminan data, biasanya istilah dipake pd aktifitas meng-update (istilah lainna mgkn download),

Recovery Mode : Tombol Home + Power, pada mode boot ini, kita bisa membuka shell..mem-flash image..bikin Backup maupun Restore. Teken

Safe Mode : Tombol Menu + Power, boot handheld secara normal tetapi tanpa registrasi dengan Google, makana aplikasi2 yg berhubungan denganna gk bakalan berfungsi ( Map, Gmail account, Market, dll)

Penutup

Android merupakan sistem operasi untuk device yang sangat powerful, dimana kompatibilitasnya sangat tinggi dan yang lebih mengagumkan, kita dapat melakukan kustomisasi yang tak pernah habis untuk ponsel kita ( hanya perlu kemauan dan keberanian ).

New Android Indonesia