3.1.1.1 Linux Kernel
Android OS được xây dựng dựa trên Linux kernel với một số sự thay đổi bởi hãng Google. Có nhiều lý do để chọn Linux kernel. Lý do quan trọng nhất đó là Linux là một “Portable Flatform” có thể được biên dịch và chạy trên nhiều phần cứng khác
67
nhau . Tất cả mọi hoạt động của điện thoại muốn thực thi được thì đều phải thực hiện ở mức cấp thấp trong lớp này bao gồm quản lý bộ nhớ (Memory managerment), giao tiếp với phần cứng (driver model), thực thi bảo mật (security), quản lý tiến trình (process). Phiên bản KitKat Android hiện giờ sử dụng Linux kernel bản 3.8.
3.1.1.2 Thư viện
Lớp tiếp theo trong kiến trúc Android bao gồm các thư viện nguồn gốc của Android. Các thư viện được viết bằng ngôn ngữ C , C ++ và giúp thiết bị để xử lý các loại dữ liệu khác nhau. Ví dụ, các thư viện SQLite là hữu ích để lưu trữ và lấy dữ liệu từ một cơ sở dữ liệu. Các thư viện khác bao gồm Media Framework, WebKit , Surface Manager, SSL cũng tương tự như vậy. Thư viện Media Framework hoạt động như giao diện chính để cung cấp một dịch vụ cho các thư viện cơ bản khác . Thư viện WebKit cung cấp các trang web trong các trình duyệt Web và quản lý đồ họa. Trong cùng lớp này còn có Android Runtime , trong đó bao gồm máy Dalvik ảo ( DVM ) và các thư viện lõi. Android runtime chịu trách nhiệm cho việc chạy các ứng dụng trên các thiết bị Android. Thuật ngữ " runtime" đề cập đến việc thời gian từ khi một ứng dụng được chạy cho đến khi nó được tắt .
3.1.1.3 Máy ảo Dalvik
Tất cả các ứng dụng mà bạn cài đặt trên các thiết bị Android được viết bằng ngôn ngữ lập trình Java. Khi một chương trình Java được biên dịch, chúng ta sẽ nhận được bytecode. JVM là một máy ảo (một máy ảo là một ứng dụng hoạt động như một hệ điều hành, có nghĩa là, nó có thể chạy hệ điều hành Windows trên máy Mac hoặc ngược lại bằng cách sử dụng một máy ảo) có thể thực hiện bytecode này. Nhưng Android sử dụng Dalvik virtual machine (DVM) để chạy các ứng dụng của nó.
DVM chạy Dalvik bytecode, đó là Java bytecode chuyển đổi bởi trình biên dịch Dex. Do đó, các tập tin .class được chuyển đổi thành Dex file bằng cách sử dụng công cụ Dx. Dalvik bytecode khi so sánh với Jave bytecode là phù hợp hơn cho các môi trường low- memory và low-processing. Ngoài ra, lưu ý rằng bytecode JVM bao gồm một hoặc nhiều file .class tùy thuộc vào số lượng file Java có mặt trong một ứng dụng, nhưng Dalvik bytecode gồm chỉ có một tập tin dex. Mỗi ứng dụng Android chạy riêng trên một
68
thể hiện của máy ảo Dalvik. Đây là một khía cạnh quan trọng của bảo mật của Android. Hình 3.2 thể hiện DVM Android khác với JVM Java.