Bộ nhớ tích hợp

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ệusiê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