Theo đó , mọi ứng dụng trong Android đều chạy như một người dùng cấp hạt nhân riêng biệt, với ID người dùng và ID nhóm duy nhất.
Vậy, điều gì xảy ra dưới mui xe khi bạn thêm người dùng mới (ví dụ: vào máy tính bảng dùng chung của bạn)?
Theo đó , mọi ứng dụng trong Android đều chạy như một người dùng cấp hạt nhân riêng biệt, với ID người dùng và ID nhóm duy nhất.
Vậy, điều gì xảy ra dưới mui xe khi bạn thêm người dùng mới (ví dụ: vào máy tính bảng dùng chung của bạn)?
Câu trả lời:
Các Linux ID người dùng mà Android sử dụng các ứng dụng cô lập lẫn nhau là hoàn toàn không liên quan đến hồ sơ người dùng trên Android 4.2 máy tính bảng.
Trong Android, mỗi ứng dụng có thư mục riêng để lưu dữ liệu. Hệ thống ID người dùng Linux được sử dụng để đảm bảo các ứng dụng không thể đọc dữ liệu của nhau. Nhưng tất cả các thư mục dữ liệu này nằm trong một thư mục trên hệ thống tập tin , /data/user/0
. Giả sử người dùng đầu tiên được gọi là Abulurd và anh ta cài đặt ứng dụng Showr. Nó có thể được cung cấp ID người dùng 1004 và thư mục /data/user/0/com.shadowburst.showr
.
Bây giờ, giả sử bạn tạo một hồ sơ người dùng mới cho Beatrice. Cô nhận được một thư mục mới /data/user/1
, bắt đầu trống rỗng. Khi cô đăng nhập vào thiết bị và cài đặt Showr, nó sẽ không tải xuống lại ứng dụng (vì trình cài đặt ứng dụng Android biết tệp APK đã có trên thiết bị), nhưng nó tạo ra ID người dùng mới 1007 (ví dụ), và một thư mục mới /data/user/1/com.shadowburst.showr
.
Android sử dụng quyền của hệ thống tập tin Linux và ID người dùng Linux khác nhau, không chỉ để đảm bảo rằng Showr của Abulurd không thể đọc dữ liệu của các ứng dụng khác của Abulurd, mà cả Showr của Abulurd cũng không thể đọc dữ liệu của Showrice của Beatrice. Hai phiên bản Showr chạy trong các quy trình khác nhau, với ID người dùng khác nhau.
Nếu bạn quen thuộc với thuật ngữ Linux, việc tạo một hồ sơ người dùng mới tương tự như sử dụng chroot
trên thiết bị để có được một phần riêng biệt của hệ thống tệp để chạy các ứng dụng.
Những gì tôi đã mô tả là quy trình thông thường, nhưng cũng giống như các ứng dụng có thể được viết để chia sẻ thư mục dữ liệu với các ứng dụng khác bởi cùng một nhà phát triển (được ký cùng một khóa), Android cho các ứng dụng cơ hội để nói rằng chúng hoạt động với nhiều người dùng. Bằng cách này, một ứng dụng có thể được viết để có một quy trình cho tất cả các hồ sơ người dùng, để cho phép họ chia sẻ dữ liệu hoặc thực hiện một số chức năng đặc biệt. Ví dụ, màn hình khóa phải hoạt động theo cách này, vì tất cả các cấu hình người dùng chia sẻ một ứng dụng màn hình khóa, phải đọc tất cả các cài đặt màn hình khóa của người dùng.
Điều gì xảy ra khi bạn thêm tài khoản người dùng mới là tài khoản mới (hoặc "Hồ sơ người dùng") được tạo. Điều này hoàn toàn không liên quan gì đến việc quản lý người dùng / nhóm trên OS-Level. Bạn sẽ nhận thấy rằng hầu hết các cách thực hiện (ví dụ: cách này trên HowToGeek ) nói về các tài khoản , vì thuật ngữ "người dùng" sẽ khá sai lệch.
Tôi không phải là nhà phát triển Android, vì vậy tôi không thể cung cấp cho bạn một lời giải thích kỹ thuật sâu hơn. Nhưng theo như tôi biết, tính năng nhiều người dùng được hiện thực hóa trên đỉnh của lõi Linux (tức là trong Java / Dalvik). EDIT: Dan đăng câu trả lời của anh ấy cùng lúc với tôi, vì vậy hãy xem ở đó để có nền tảng kỹ thuật :)