Tải bản đầy đủ (.docx) (11 trang)

Nhiệm vụ của hệ điều hành android

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (595.27 KB, 11 trang )

3. Nhiệm vụ của Hệ Điều Hành.
 Điều khiển và quản lý trực tiếp các phần cứng như bo mạch chủ, bo mạch đồ 

họa và bo mạch âm thanh,...
 Thực hiện một số thao tác cơ bản trong máy tính như các thao tác đọc, viết tập 
tin, quản lý hệ thống tập tin (file system) và các kho dữ liệu.
 Cung ứng một hệ thống giao diện sơ khai cho các ứng dụng thường là thông 
qua một hệ thống thư viện các hàm chuẩn để điều hành các phần cứng mà từ đó
các ứng dụng có thể gọi tới.
 Cung ứng một hệ thống lệnh cơ bản để điều hành máy. Các lệnh này gọi là lệnh 
hệ thống (system command).
 Ngoài ra hệ điều hành, trong vài trường hợp, cũng cung cấp các dịch vụ cơ bản 
cho các phần mềm ứng dụng thông thường như chương trình duyệt 
Web, chương trình soạn thảo văn bản....
Trong đó:

Thực hiện một số thao tác cơ bản trong máy tính như các 
thao tác đọc, viết tập tin, quản lý hệ thống tập tin (file 
system) và các kho dữ liệu.
Những cách lưu trữ dữ liệu có sẵn mà Android cung cấp:
Internal file storage: Lưu trữ các file riêng tư của ứng dụng (app­private files)
trong hệ thống file của thiết bị.
External file storage: Lưu trữ file trên hệ thống file chia sẻ ra được bên ngoài.
Thường dùng cho các file mà người dùng được chia sẽ, chẳng hạn như hình 
ảnh, video.
Shared Preferences: Lưu trữ dữ liệu nguyên thủy bởi các cặp key­value.
Database: Lưu trữ các dữ liệu có cấu trúc trong cơ sở dữ liệu private.


Ngoại trư một số loại file trên External Storage, thì tất cả các cách lưu trữ này 
dành cho dữ liệu riêng tư của ứng dụng ­ dữ liệu không thể truy cập tự nhiên 


vào các ứng dụng khác. Nếu bạn muốn chia sẻ file với các ứng dụng khác bạn
nên sử dụng FileProvider API
Nếu bạn muốn chia sẻ dữ liệu cho ứng dụng khác sử dụng bạn có thể dùng 
Content Provider. Content Provider đưa cho bạn toàn quyền kiểm soát quyền 
read/write có sẵn cho các ứng dụng khác, bất kể các thức bạn đã lưu trữ dữ 
liệu (mặc dù thường là database).
1. Internal storage.

Theo mặc định thì các files được lưu vào Internal Storage (bộ nhớ trong) sẽ là 
private đối với ứng dụng của bạn, và các ứng dụng khác sẽ không kết nối 
được (người dùng cũng không được trừ khi chúng có quyền truy cập root). 
Điều này làm cho Internal Storage là một nơi lưu trữ dữ liệu tốt mà người dùng
không cần truy cập trực tiếp. Hệ thống cung cấp một private directory trong hệ 
thống file cho mỗi ứng dụng, nơi bạn có thể sắp xếp bất kì tệp nào mà ứng 
dụng của bạn cần.
Khi người dùng gỡ cài đặt ứng dụng của bạn, các file 
được lưu trữ trong Internal Storage được xóa bỏ. Bởi do hành vi này mà bạn 


không nên dùng Internal Storage để lưu trữ dữ liệu mà người dùng dự kiến 
muốn sử dụng độc lập với ứng dụng của bạn. Ví dụ ứng dụng của bạn cho 
phép chụp ảnh, người dùng sẽ mong đơi sẽ sử dụng những bức ảnh đó sau 
khi gỡ bỏ ứng dụng của bạn. Vì vậy bạn nên lưu các loại file đó ở External 
Storage.
Internal cache file:
Nếu bạn muốn lưu trữ một số dữ liệu tạm thời, thay vì duy trì lưu dữ liệu liên 
tục, bạn nên sử dụng cache directory để lưu trữ dữ liệu. Mỗi ứng dụng có một 
bộ nhớ cache riêng dành riêng cho các loại file này. Khi ứng dụng đang hoạt 
động nhưng hệ thống thiếu bộ nhớ, Android có thể xoá các file trong bộ nhớ 
cache này để khôi phục dung lượng. Tuy nhiên bạn không nên dự vào hệ 

thống để dọn dẹp các tệp này cho bạn. Bạn nên luôn tự duy trì các file trong 
bộ nhớ cache ở trong giới hạn không gian hợp lý được tiêu thụ, chẳng hạn 
như 1MB. Khi người dùng gỡ các cài đặt của ứng dụng, các file này cũng bị 
xóa.
2. External storage.

Mọi thiết bị Android đều hỗ trợ không gian lưu trữ External Storage (bộ nhớ 
ngoài) mà bạn có thể sử dụng để lưu file. Vùng nhớ này được gọi là External 
(ngoài) là bởi vì nói không phải chắc chắn là một vùng nhớ có thể truy cập 
được mà nó là một không gian lưu trữ. Là vùng nhớ mà người dùng có thể kết
nối với máy tính, thậm chí có thể tháo lắp vật lý, ví dụ như các thẻ nhớ SD. 
Các file trên External Storage có thể được đọc ở mọi nơi và có thể được 


người dùng sửa đổi khi chúng cho phép như là một USB để có thể chuyển đổi 

dữ liệu sang máy tính.
Vì vậy trước khi bạn cố gắng truy cập truy cập một file trong External Storage 
trong ứng dụng của bạn, bạn nên kiểm tra tính khả dụng của các thu mục này 
cũng như các file trong chúng
Thông thường, bạn nên sử dụng bộ nhớ ngoài cho dữ liệu mà có thể truy cập 
vào các ứng dụng khác và vẫn còn lưu khi ứng dụng của bạn bị người dùng 
gỡ cài đặt. Chăng hạn như những bức ảnh được chụp hoặc những file đã 
được download xuống trước đó. Hệ thống sẽ cung cấp các thư mục pubic 
chuẩn cho các loại file này, do đó người dùng có các vị trí cho photos, 
ringtones, music, ...
Bạn cũng có thể lưu file vào External Storage trong thư mục dành riêng cho 
ứng dụng của bạn mà hệ thống sẽ xóa khi người dùng gỡ cài đặt ứng dụng 
này trên điện thoại. Đây có thể là giải pháp thay thế cho bộ nhớ trong nếu cần 
thêm dung lượng, nhưng các file ở đây không đảm bảo có thể truy cập được 

bởi vì người dùng có thể xóa, hay tháo thẻ nhớ SD. Và các file này có thể đọc 


được mọi nơi, chúng chỉ sao lưu vào một nơi mà không được chia sẽ với các 
ứng dụng khác.
3. Shared Preferences

Nếu bạn không lưu nhiều dữ liệu và dữ liệu đó không yêu cầu cấu trúc, bạn 
nên sử dụng Shared Preferences. Loại lưu trữ này cho phép bạn đọc và ghi 
các cặp key­value của các kiểu dữ liệu nguyên thủy: booleans, floats, ints, 
longs và strings
Các cặp key­value này được ghi vào các tệp XML, luôn tồn tại khi ứng dụng 
được sử dụng và kể các khi ứng dụng bị kill. Bạn có thể chỉ định tên cho file 
đó theo cách thủ công cho mỗi hành động để lưu trữ dữ liệu của bạn.
Tên Shared Preferences đôi khi gây ra một chút hiểu lầm bởi vì nó không phải 
hoàn toàn để lưu những tùy chọn của người dùng, chẳng hạn như nhạc 
chuông mà người dùng đã chọn. Bạn chỉ có thể dùng Shared Preferences để 
lưu bất kì loại dữ liệu đơn giản nào, chẳng hạn như điểm số cao của người 
dùng. Tuy nhiên nếu bạn muốn lưu tùy chon người dùng cho ứng dụng của 
mình bạn có thể dùng PreferenceActivity.


4. Databases

Android cung cấp hỗ trợ đầy đủ cho SQLite Database. Bất kì cơ sở dữ liệu mà
bạn tạo chỉ có thể truy cập được bởi ứng dụng của bạn. Tuy nhiên thay vì sử 
dụng các SQLite API trực tiếp, thì hiện tại Android khuyến khích các 
Developers tên tạo và tương tác với cơ sở dữ liệu của mình với Room 
Databse, một component trong Android Architecture của gói Jetpack.


Room cung cấp một abstract class ánh xạ đối tượng cho phép truy cập cơ sở 
dữ liệu nhanh chóng, tốc độ trong khi đã phát huy khai thác toàn bộ sức mạnh 
của SQLite Database.
Mặc dù bạn có thể sử dụng với SQLite Database nhưng hiện thì đã xem như 
tốn rất nhiều thời gian và công sức để sử dụng ^^:
1. Các truy vấn cứng SQL thì không được Compiler time checking.
2. Khi cấu trúc cơ sở dữ liệu thay đổi thì bạn phải update một cách thủ 
công. Quá trình này gây tốn thời gian vã dễ bị lỗi.
3. Bạn phải viết nhiều mã để chuyển đổi giữa các truy vấn SQL và các đối 
tượng dữ liệu java.
Thư viện Room sẽ giải quyết hết những vấn đề này trong khi cung cấp một lớp
trừu tượng trên SQLite.


5.Tổng kết.

Bài viết này đã liệt kê ra những cách lưu trữ dữ liệu mà Android cung cấp cho 
ứng dụng. Ngoài ra cũng có thể lưu trữ dữ liệu bằng cách sử dụng Network 
Connection. Để làm việc với internet thì có thể sử dụng các 
gói java.net và android.net được cung cấp.

Cung ứng một hệ thống lệnh cơ bản để điều hành máy. Các 
lệnh này gọi là lệnh hệ thống (system command).
Trong Android có  công cụ dòng lệnh là: 
-

Những gói DSK Android được yêu cầu để phát triển ứng dụng.
Có thể cài đặt và cập nhật từng gói bằng Trình quản lý SDK của Android 
Studio hoặc sdkmanager công cụ dòng lệnh.
Tất cả các gói được tải xuống thư mục SDK Android của bạn, nơi bạn có thể định vị như

sau:
o Trong Android Studio, bấm vào File > Project Structure.
o Chọn SDK Location trong khung bên trái. Đường dẫn được hiển thị
dưới Android SDK location.

Công cụ SDK Android 
Nằm trong: android_sdk/tools/bin/
Gói này độc lập với nền tảng và được yêu cầu cho dù bạn đang phát triển nền tảng 
Android nào.
apkanalyzer

Cung cấp cái nhìn sâu sắc về thành phần APK của bạn sau khi quá trình xây 
dựng hoàn tất.
avdmanager

Cho phép bạn tạo và quản lý Thiết bị ảo Android (AVD) từ dòng lệnh.
jobb

Cho phép bạn xây dựng các tệp mở rộng APK được mã hóa và không được mã 
hóa ở định dạng Opaque Binary Blob (OBB).
lint


Một công cụ quét mã có thể giúp bạn xác định và khắc phục các sự cố với chất 
lượng cấu trúc của mã.
monkeyrunner

Cung cấp giao diện dòng lệnh để chạy chương trình có thể cài đặt ứng dụng 
Android hoặc gói thử nghiệm, chạy nó, gửi tổ hợp phím đến nó, chụp ảnh màn 
hình và hơn thế nữa.

sdkmanager

Cho phép bạn xem, cài đặt, cập nhật và gỡ cài đặt các gói cho SDK Android.
Gói này bao gồm các công cụ khác mà bạn không cần phải gọi từ dòng lệnh (chẳng 
hạn như ProGuard để thu nhỏ mã và mã hóa ).
 Trong đó, Android Debug Bridge (adb) là một công cụ dòng lệnh linh hoạt cho phép 
bạn giao tiếp với một thiết bị. Lệnh adb tạo điều kiện cho nhiều hành động của thiết bị, 
chẳng hạn như cài đặt và gỡ lỗi ứng dụng và nó cung cấp quyền truy cập vào hệ vỏ 
Unix mà bạn có thể sử dụng để chạy nhiều loại lệnh trên thiết bị. Đây là một chương 
trình máy khách­máy chủ bao gồm ba thành phần:


Một khách hàng , sẽ gửi lệnh. Máy khách chạy trên máy phát triển của bạn. Bạn
có thể gọi một máy khách từ thiết bị đầu cuối dòng lệnh bằng cách phát lệnh 
adb.



Một daemon (adbd) , chạy các lệnh trên thiết bị. Trình nền chạy như một quá 
trình nền trên mỗi thiết bị.



Một máy chủ , quản lý giao tiếp giữa máy khách và daemon. Máy chủ chạy như 
một quá trình nền trên máy phát triển của bạn.

adbđược bao gồm trong gói Công cụ nền tảng SDK Android. Bạn có thể tải xuống gói 
này với Trình quản lý SDK , cài đặt nó tại android_sdk/platform­tools/ .

Công cụ xây dựng SDK Android 

Nằm trong:  android_sdk/build­tools/version/
Gói này là cần thiết để xây dựng ứng dụng Android. Hầu hết các công cụ ở đây được 
gọi bởi các công cụ xây dựng và không dành cho bạn. Tuy nhiên, các công cụ dòng 
lệnh sau có thể hữu ích:
aapt2


Phân tích cú pháp, lập chỉ mục và biên dịch tài nguyên Android thành định dạng nhị 
phân được tối ưu hóa cho nền tảng Android và đóng gói các tài nguyên được biên dịch 
thành một đầu ra duy nhất.
apksigner

Dấu hiệu APK và kiểm tra xem chữ ký APK sẽ được xác minh thành công trên tất cả các
phiên bản nền tảng mà APK cụ thể hỗ trợ.
zipalign

Tối ưu hóa các tệp APK bằng cách đảm bảo rằng tất cả dữ liệu không nén được bắt đầu
bằng một căn chỉnh cụ thể liên quan đến phần bắt đầu của tệp.
Lưu ý: Bạn có thể có nhiều phiên bản công cụ xây dựng để xây dựng ứng dụng của mình cho các 
phiên bản Android khác nhau.

Công cụ nền tảng SDK Android 
Nằm trong: android_sdk/platform­tools/
Các công cụ này được cập nhật cho mọi phiên bản mới của nền tảng Android để hỗ trợ
các tính năng mới (và đôi khi thường xuyên hơn để sửa chữa hoặc cải thiện các công 
cụ) và mỗi bản cập nhật tương thích ngược với các phiên bản nền tảng cũ hơn.
adb
Cầu gỡ lỗi Android (adb) là một công cụ đa năng cho phép bạn quản lý trạng thái của 
một phiên bản giả lập hoặc thiết bị hỗ trợ Android. Bạn cũng có thể sử dụng nó để cài 
đặt APK trên thiết bị.

etc1tool
Một tiện ích dòng lệnh cho phép bạn mã hóa hình ảnh PNG thành chuẩn nén ETC1 và 
giải mã hình ảnh nén ETC1 trở lại PNG.
fastboot
Flash một thiết bị với nền tảng và hình ảnh hệ thống khác. Để biết hướng dẫn nhấp 
nháy, hãy xem Hình ảnh gốc cho các thiết bị Nexus và Pixel .
logcat
Đây là một công cụ được gọi qua adb để xem nhật ký ứng dụng và hệ thống.


Trình giả lập Android 
Nằm trong: android_sdk/emulator/
Gói này là bắt buộc để sử dụng Trình giả lập Android. Nó bao gồm những điều sau 
đây :.
emulator
Công cụ mô phỏng thiết bị dựa trên QEMU mà bạn có thể sử dụng để gỡ lỗi và kiểm tra 
các ứng dụng của mình trong môi trường thời gian chạy Android thực tế.
mksdcard
Giúp bạn tạo một hình ảnh đĩa mà bạn có thể sử dụng với trình giả lập, để mô phỏng sự
hiện diện của thẻ lưu trữ ngoài (chẳng hạn như thẻ SD).
Lưu ý: Trước khi sửa đổi 25.3.0, các công cụ giả lập đã được bao gồm trong gói Công cụ SDK

Jetifier  
Jetifier đọc một thư viện sử dụng các lớp Thư viện hỗ trợ và xuất ra một thư viện tương đương 
sử dụng các lớp AndroidX mới hơn.

Cung ứng một hệ thống giao diện sơ khai cho các ứng dụng 
thường là thông qua một hệ thống thư viện các hàm chuẩn 
để điều hành các phần cứng mà từ đó các ứng dụng có thể 
gọi tới.

Ứng dụng Android được viết bằng ngôn ngữ lập trình Java. Bộ công cụ SDK Android sẽ
biên dịch mã của bạn—cùng với bất kỳ tệp dữ liệu và tài nguyên nào—vào một APK: 
một gói Android, đó là một tệp lưu trữ có hậu tố .apk. Một tệp APK chứa tất cả nội dung 
của một ứng dụng Android và là tệp mà các thiết bị dựa trên nền tảng Android sử dụng 
để cài đặt ứng dụng.
Sau khi được cài đặt lên một thiết bị, từng ứng dụng Android sẽ ở bên trong hộp cát 
bảo mật của chính nó:


Hệ điều hành Android là một hệ thống Linux đa người dùng trong đó mỗi ứng
dụng là một người dùng khác nhau.




Theo mặc định, hệ thống gán cho từng ứng dụng một ID người dùng Linux 
duy nhất (ID chỉ được sử dụng bởi hệ thống và không xác định đối với ứng 
dụng). Hệ thống sẽ đặt quyền cho tất cả tệp trong một ứng dụng sao cho chỉ 
ID người dùng được gán cho ứng dụng đó mới có thể truy cập chúng.



Mỗi tiến trình có máy ảo (VM) riêng của mình, vì thế mã của một ứng dụng sẽ
chạy độc lập với các ứng dụng khác.



Theo mặc định, mọi ứng dụng chạy trong tiến trình Linux của chính nó. 
Android khởi động tiến trình khi bất kỳ thành phần nào của ứng dụng cần 
được thực thi, sau đó tắt tiến trình khi không còn cần nữa hoặc khi hệ thống 

phải khôi phục bộ nhớ cho các ứng dụng khác.

Bằng cách này, hệ thống Android triển khai nguyên tắc đăc quyền ít nhất. Cụ thể, theo 
mặc định, mỗi ứng dụng chỉ có thể truy cập vào các thành phần mà nó cần để thực hiện
công việc của mình và không hơn. Điều này tạo ra một môi trường rất bảo mật mà 
trong đó một ứng dụng không thể truy cập các bộ phận của hệ thống mà nó không 
được cấp quyền.
Tuy nhiên, có nhiều cách để một ứng dụng chia sẻ dữ liệu với các ứng dụng khác và để
một ứng dụng truy cập vào các dịch vụ của hệ thống:


Có thể sắp xếp để hai ứng dụng chia sẻ cùng ID người dùng Linux, trong 
trường hợp đó chúng có thể truy cập các tệp của nhau. Để tiết kiệm tài 
nguyên của hệ thống, các ứng dụng có cùng ID người dùng cũng có thể sắp 
xếp để chạy trong cùng tiến trình Linux và chia sẻ cùng VM (các ứng dụng 
cũng phải được ký bằng cùng chứng chỉ).



Một ứng dụng có thể yêu cầu quyền truy cập dữ liệu của thiết bị chẳng hạn 
như danh bạ của người dùng, tin nhắn SMS, thiết bị lưu trữ gắn được (thẻ 
SD), máy ảnh, Bluetooth và nhiều nữa. Tất cả quyền ứng dụng đều phải 
được cấp bởi người dùng tại thời điểm cài đặt.



×