Android luôn hỗ trợ các phụ kiện bộ nhớ ngoài (chẳng hạn như thẻ SD), nhưng trước đây, các phụ kiện này chỉ được lưu trữ tệp đơn giản, do tính vô thường dự kiến của chúng và khả năng bảo vệ dữ liệu ở mức tối thiểu được cung cấp cho bộ nhớ ngoài truyền thống. Android 6.0 giới thiệu khả năng sử dụng bộ nhớ ngoài để hoạt động như bộ nhớ trong bộ nhớ.
Khi được sử dụng, phương tiện lưu trữ bên ngoài sẽ được định dạng và mã hoá thành chỉ hoạt động với một thiết bị Android tại một thời điểm. Vì truyền thông được liên kết chặt chẽ vào thiết bị Android sử dụng công cụ này, công cụ này có thể lưu trữ an toàn cả ứng dụng và dữ liệu riêng tư của tất cả người dùng.
Khi người dùng lắp phương tiện lưu trữ mới (chẳng hạn như thẻ SD) vào thiết bị có thể chấp nhận
vị trí, Android sẽ hỏi họ cách sử dụng nội dung nghe nhìn. Họ có thể chọn
sử dụng nội dung nghe nhìn, định dạng và mã hoá nội dung đó hoặc có thể tiếp tục sử dụng
nguyên trạng để lưu trữ tệp đơn giản. Nếu họ chọn áp dụng, nền tảng sẽ cung cấp
di chuyển nội dung của bộ nhớ dùng chung chính (thường được gắn tại
/sdcard
) cho nội dung nghe nhìn mới được triển khai, giải phóng không gian quý giá trên
bộ nhớ trong. Không giống như bộ nhớ truyền thống bị giới hạn ở 2TB do
sử dụng
MBR,
mức sử dụng bộ nhớ thích hợp
Thẻ nhà xuất bản của Google (GPT)
nên có giới hạn lưu trữ tệp là khoảng 9ZB.
Chỉ có thể đặt ứng dụng trên phương tiện lưu trữ được sử dụng khi nhà phát triển đã
đã chỉ định hỗ trợ thông qua thuộc tính android:installLocation
.
Cài đặt mới của các ứng dụng được hỗ trợ được đặt tự động trên
thiết bị lưu trữ có dung lượng trống nhiều nhất và người dùng có thể di chuyển các ứng dụng được hỗ trợ
giữa các thiết bị lưu trữ trong ứng dụng Cài đặt. Đã chuyển ứng dụng sang mô hình sử dụng
phương tiện được ghi nhớ trong khi phương tiện được đẩy ra
và quay lại khi phương tiện được đưa vào lại.
Bảo mật
Nền tảng này tạo ngẫu nhiên các khoá mã hoá cho mỗi thiết bị được sử dụng và lưu trữ chúng vào bộ nhớ trong của thiết bị Android. Chiến dịch này giúp nội dung nghe nhìn được sử dụng an toàn như bộ nhớ trong. Các khoá là liên kết với các thiết bị đã sử dụng dựa trên GUID phân vùng đã sử dụng.
Nếu thiết bị được định cấu hình để sử dụng mã hoá dựa trên tệp (FBE) trên bộ nhớ trong, sau đó bộ nhớ có thể áp dụng sẽ sử dụng cả FBE và mã hoá siêu dữ liệu. Nếu không, bộ nhớ có thể sử dụng sử dụng toàn bộ đĩa mã hoá (FDE).
Bố cục trên ổ đĩa của thiết bị được sử dụng phản ánh chính xác dữ liệu nội bộ phân vùng, bao gồm nhãn SELinux, v.v. Khi nhiều người dùng được hỗ trợ trên Android, thiết bị lưu trữ được sử dụng cũng hỗ trợ nhiều người dùng với cùng mức độ tách biệt như bộ nhớ trong.
Vì nội dung của thiết bị lưu trữ được sử dụng được liên kết chặt chẽ với Thiết bị Android sử dụng khoá mã hoá này, không trích xuất được khoá mã hoá từ thiết bị mẹ, do đó không thể kết nối thiết bị lưu trữ nơi khác.
Nếu thiết bị của bạn sử dụng FBE, hãy xem FBE tài liệu và siêu dữ liệu tài liệu về mã hoá để biết cách định cấu hình FBE và chế độ mã hoá siêu dữ liệu trên bộ nhớ thích ứng.
Hiệu suất và độ ổn định
Chỉ phương tiện lưu trữ bên ngoài ở các vị trí ổn định, chẳng hạn như một khe cắm bên trong ngăn chứa pin hoặc phía sau nắp bảo vệ, cần được cân nhắc sử dụng để tránh vô tình mất hoặc hỏng dữ liệu. Đặc biệt, USB thiết bị được kết nối với điện thoại hoặc máy tính bảng không bao giờ được xem xét để sử dụng. Một trường hợp ngoại lệ phổ biến là ổ đĩa USB bên ngoài được kết nối với kiểu TV vì toàn bộ TV thường được cài đặt ở một vị trí ổn định.
Khi người dùng sử dụng một thiết bị lưu trữ mới, nền tảng sẽ chạy một phép đo điểm chuẩn và so sánh hiệu suất của ứng dụng với bộ nhớ trong. Nếu thiết bị được sử dụng là chậm hơn đáng kể so với bộ nhớ trong, nền tảng sẽ cảnh báo người dùng về trải nghiệm có thể không tốt. Điểm chuẩn này được lấy từ dữ liệu I/O thực tế của các ứng dụng Android phổ biến. Hiện tại, việc triển khai AOSP sẽ chỉ cảnh báo người dùng vượt quá một ngưỡng duy nhất, nhưng nhà sản xuất thiết bị có thể điều chỉnh điều này chẳng hạn như từ chối hoàn toàn việc áp dụng nếu thẻ cực kỳ chậm.
Các thiết bị đã sử dụng phải được định dạng bằng một hệ thống tệp hỗ trợ POSIX
và các thuộc tính mở rộng, chẳng hạn như ext4
hoặc
f2fs
Để có hiệu suất tối ưu, hệ thống tệp f2fs
được đề xuất cho các thiết bị lưu trữ dựa trên flash.
Khi bảo trì định kỳ ở trạng thái rảnh, nền tảng sẽ gặp vấn đề
FI_TRIM
để sử dụng nội dung nghe nhìn giống như với bộ nhớ trong.
Thông số kỹ thuật hiện tại của thẻ SD không hỗ trợ DISCARD
Command; nhưng nhân hệ điều hành sẽ quay lại dùng lệnh ERASE
chương trình cơ sở của thẻ SD nào có thể chọn sử dụng cho mục đích tối ưu hoá.
Thử nghiệm
Để kiểm tra xem bộ nhớ có thể sử dụng có đang hoạt động không, hãy chạy kiểm thử CTS sau:
cts-tradefed run commandAndExit cts-dev \ -m CtsAppSecurityHostTestCases \ -t android.appsecurity.cts.AdoptableHostTest
Để xác minh hoạt động của ổ đĩa USB và thẻ SD khi thiết bị không có khe cắm tích hợp hoặc khi trình kết nối USB đang được sử dụng cho một adb đang hoạt động kết nối, sử dụng:
adb shell sm set-virtual-disk true