Penyimpanan yang Dapat Diadopsi

Android selalu mendukung aksesori penyimpanan eksternal (seperti kartu SD), tetapi aksesori ini secara historis terbatas pada penyimpanan file sederhana, karena ketidakkekalan yang diharapkan dan perlindungan data minimal yang ditawarkan ke penyimpanan eksternal tradisional . Android 6.0 memperkenalkan kemampuan untuk mengadopsi media penyimpanan eksternal untuk bertindak seperti penyimpanan internal.

Ketika media penyimpanan eksternal diadopsi, itu diformat dan dienkripsi untuk hanya bekerja dengan satu perangkat Android pada satu waktu. Karena media sangat terikat dengan perangkat Android yang mengadopsinya, media dapat dengan aman menyimpan aplikasi dan data pribadi untuk semua pengguna.

Saat pengguna memasukkan media penyimpanan baru (seperti kartu SD) di lokasi yang dapat diadopsi, Android menanyakan kepada mereka bagaimana mereka ingin menggunakan media tersebut. Mereka dapat memilih untuk mengadopsi media, yang memformat dan mengenkripsinya, atau mereka dapat terus menggunakannya apa adanya untuk penyimpanan file sederhana. Jika mereka memilih untuk mengadopsi, platform menawarkan untuk memigrasikan konten penyimpanan bersama utama (biasanya dipasang di /sdcard ) ke media yang baru diadopsi, membebaskan ruang berharga pada penyimpanan internal. Tidak seperti penyimpanan tradisional, yang dibatasi hingga 2 TB karena penggunaan MBR , penyimpanan yang dapat diadopsi menggunakan GPT dan oleh karena itu memiliki batas penyimpanan file ~9ZB.

Aplikasi dapat ditempatkan pada media penyimpanan yang diadopsi hanya jika pengembang telah menunjukkan dukungan melalui atribut android:installLocation . Pemasangan baru aplikasi yang didukung secara otomatis ditempatkan pada perangkat penyimpanan dengan ruang paling kosong, dan pengguna dapat memindahkan aplikasi yang didukung antar perangkat penyimpanan di aplikasi Pengaturan . Aplikasi yang dipindahkan ke media yang diadopsi akan diingat saat media dikeluarkan, dan ditampilkan kembali saat media dimasukkan kembali.

Keamanan

Platform secara acak menghasilkan kunci enkripsi untuk setiap perangkat yang diadopsi dan menyimpannya di penyimpanan internal perangkat Android. Ini secara efektif membuat media yang diadopsi seaman penyimpanan internal. Kunci dikaitkan dengan perangkat yang diadopsi berdasarkan GUID partisi yang diadopsi.

Jika perangkat dikonfigurasi untuk menggunakan enkripsi berbasis file (FBE) pada penyimpanan internalnya, maka penyimpanan yang dapat diadopsi menggunakan enkripsi FBE dan metadata . Jika tidak, penyimpanan yang dapat diadopsi menggunakan enkripsi disk penuh (FDE).

Tata letak on-disk dari perangkat yang diadopsi sangat mencerminkan partisi data internal, termasuk label SELinux, dll. Ketika multi-pengguna didukung pada perangkat Android, perangkat penyimpanan yang diadopsi juga mendukung multi-pengguna dengan tingkat isolasi yang sama seperti internal penyimpanan.

Karena konten perangkat penyimpanan yang diadopsi sangat terikat dengan perangkat Android yang mengadopsinya, kunci enkripsi tidak boleh diekstrak dari perangkat induk, dan oleh karena itu perangkat penyimpanan tidak dapat dipasang di tempat lain.

Jika perangkat Anda menggunakan FBE, lihat dokumentasi FBE dan dokumentasi enkripsi metadata untuk cara mengonfigurasi FBE dan enkripsi metadata pada penyimpanan yang dapat diadopsi.

Performa dan stabilitas

Hanya media penyimpanan eksternal di lokasi yang stabil, seperti slot di dalam kompartemen baterai atau di belakang penutup pelindung, yang harus dipertimbangkan untuk diadopsi guna membantu menghindari kehilangan atau kerusakan data yang tidak disengaja. Secara khusus, perangkat USB yang terhubung ke ponsel atau tablet tidak boleh dipertimbangkan untuk diadopsi. Satu pengecualian umum adalah drive USB eksternal yang terhubung ke perangkat bergaya TV, karena seluruh TV biasanya dipasang di lokasi yang stabil.

Ketika pengguna mengadopsi perangkat penyimpanan baru, platform menjalankan benchmark dan membandingkan kinerjanya dengan penyimpanan internal. Jika perangkat yang diadopsi secara signifikan lebih lambat dari penyimpanan internal, platform akan memperingatkan pengguna tentang kemungkinan pengalaman yang menurun. Tolok ukur ini berasal dari perilaku I/O sebenarnya dari aplikasi Android populer. Saat ini, implementasi AOSP hanya akan memperingatkan pengguna di luar satu ambang batas, tetapi produsen perangkat dapat mengadaptasi ini lebih lanjut, seperti menolak adopsi sepenuhnya jika kartu sangat lambat.

Perangkat yang diadopsi harus diformat dengan sistem file yang mendukung izin POSIX dan atribut yang diperluas, seperti ext4 atau f2fs . Untuk kinerja optimal, sistem file f2fs direkomendasikan untuk perangkat penyimpanan berbasis flash.

Saat melakukan pemeliharaan idle berkala, platform mengeluarkan FI_TRIM ke media yang diadopsi seperti halnya untuk penyimpanan internal. Spesifikasi kartu SD saat ini tidak mendukung perintah DISCARD ; tetapi kernel malah kembali ke perintah ERASE , yang mungkin dipilih oleh firmware kartu SD untuk digunakan untuk tujuan pengoptimalan.

Pengujian

Untuk menguji apakah penyimpanan yang dapat diadopsi berfungsi, jalankan pengujian CTS ini:

cts-tradefed run commandAndExit cts-dev \
    -m CtsAppSecurityHostTestCases \
    -t android.appsecurity.cts.AdoptableHostTest

Untuk memverifikasi perilaku drive USB dan kartu SD saat perangkat tidak memiliki slot internal atau saat konektor USB digunakan untuk koneksi adb aktif, gunakan:

adb shell sm set-virtual-disk true