Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
237,62 KB
Nội dung
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) Ngồ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 (appprivate 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 ngồ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 ngun thủy bởi các cặp keyvalue 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 tồn quyền kiểm số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ể xố 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 ln 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ớ ngồi) mà bạn có thể sử dụng để lưu file. Vùng nhớ này được gọi là External (ngồ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ớ ngồ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 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 keyvalue của các kiểu dữ liệu ngun thủy: booleans, floats, ints, longs và strings Các cặp keyvalue này được ghi vào các tệp XML, ln 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 hồn tồn để lưu những tùy chọn của người dùng, chẳng hạn như nhạc chng 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 tồ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 ^^: Các truy vấn cứng SQL thì khơng được Compiler time checking 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. Q trình này gây tốn thời gian vã dễ bị lỗi 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. Ngồ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 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 gói tải xuống thư mục SDK Android bạn, nơi bạn định vị sau: o Trong Android Studio, bấm vào File > Project Structure o Chọn SDK Location khung bên trái Đường dẫn hiển thị 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 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 q trình xây dựng hồ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ụ qt 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áchmá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 q 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 q 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/platformtools/ Cơng cụ xây dựng SDK Android Nằm trong: android_sdk/buildtools/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 ngun 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 ngun đượ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/platformtools/ 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 xun 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ữ ngồ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 ngun 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 ngun 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 ngun 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ể 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 ... 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 ... 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 u cầu để phát triển ứng dụng... 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 ngun của hệ thống, các ứng dụng có cùng ID người dùng cũng có thể sắp