Android selalu mendukung aksesori penyimpanan eksternal (seperti kartu SD), tetapi aksesoris ini dulunya terbatas pada penyimpanan file sederhana, karena ketidaktetapan yang diperkirakan dan perlindungan data minimal yang ditawarkan penyimpanan eksternal tradisional. Android 6.0 memperkenalkan kemampuan untuk mengadopsi media penyimpanan eksternal agar berfungsi seperti internal Storage.
Ketika diadopsi, media penyimpanan eksternal diformat dan dienkripsi hanya ke bekerja dengan satu perangkat Android pada satu waktu. Karena media terkait erat ke perangkat Android yang menggunakannya, perangkat itu dapat menyimpan aplikasi dan perangkat itu dengan aman data pribadi untuk semua pengguna.
Saat pengguna memasukkan media penyimpanan baru (seperti kartu SD) ke perangkat yang dapat diadopsi
Android akan menanyakan cara menggunakan media tersebut. Mereka dapat memilih untuk
mengadopsi media tersebut, 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, sehingga mengosongkan ruang penyimpanan
dan penyimpanan internal. Tidak seperti penyimpanan tradisional, yang dibatasi hingga 2TB karena
penggunaan
MBR
penggunaan penyimpanan yang dapat diadaptasi
GPT
dan karena itu memiliki batas penyimpanan file ~9ZB.
Aplikasi dapat ditempatkan pada media penyimpanan yang diadopsi hanya jika developer telah
menunjukkan dukungan melalui atribut android:installLocation
.
Penginstalan baru untuk aplikasi yang didukung akan otomatis ditempatkan di
yang paling banyak memiliki ruang kosong, dan pengguna dapat memindahkan aplikasi yang didukung
antar-perangkat penyimpanan di aplikasi Setelan. Aplikasi yang dipindahkan ke adopsi
media akan diingat saat media dikeluarkan,
dan dikembalikan saat media dimasukkan kembali.
Keamanan
Platform secara acak membuat 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 adalah yang terkait dengan perangkat yang diadopsi berdasarkan GUID partisi yang diadopsi.
Jika perangkat dikonfigurasi untuk menggunakan enkripsi berbasis file (FBE) pada penyimpanan internal, kemudian penyimpanan yang dapat diadopsi menggunakan FBE dan enkripsi metadata. Jika tidak, penyimpanan yang dapat diadopsi menggunakan full-disk enkripsi (FDE).
Tata letak {i>on-disk<i} perangkat yang diadopsi secara dekat mencerminkan data internal , termasuk label SELinux, dll. Bila multi-pengguna didukung di Android, perangkat penyimpanan yang diadopsi juga mendukung multi-pengguna dengan tingkat isolasi yang sama seperti penyimpanan internal.
Karena isi perangkat penyimpanan yang diadopsi terikat kuat dengan Perangkat Android yang mengadopsinya, kunci enkripsi tidak boleh diekstrak dari perangkat induk, sehingga perangkat penyimpanan tidak dapat dipasang di tempat lain.
Jika perangkat Anda menggunakan FBE, lihat FBE dokumentasidan metadata dokumentasi enkripsi untuk mengetahui cara mengonfigurasi FBE dan enkripsi metadata di yang dapat diadopsi.
Performa dan stabilitas
Hanya media penyimpanan eksternal di lokasi yang stabil, misalnya slot di dalam kompartemen baterai atau di balik penutup pelindung, harus dipertimbangkan untuk untuk membantu menghindari kehilangan atau kerusakan data secara tidak sengaja. Secara khusus, USB perangkat yang terhubung ke ponsel atau tablet tidak boleh dipertimbangkan untuk diadopsi. Satu pengecualian umum adalah drive USB eksternal yang terhubung ke model TV perangkat Anda, karena seluruh TV biasanya diinstal di lokasi yang stabil.
Ketika pengguna mengadopsi perangkat penyimpanan baru, platform akan menjalankan tolok ukur dan membandingkan performanya terhadap penyimpanan internal. Jika perangkat yang diadopsi adalah jauh lebih lambat dibandingkan penyimpanan internal, platform memperingatkan pengguna tentang pengalaman yang mungkin menurun. Tolok ukur ini berasal dari pengaturan I/O aktual aplikasi Android populer. Saat ini, implementasi AOSP hanya memperingatkan pengguna di luar batas tunggal, tetapi produsen perangkat dapat menyesuaikannya lebih lanjut, seperti menolak adopsi sepenuhnya jika kartu sangat lambat.
Perangkat yang digunakan harus diformat dengan sistem file yang mendukung POSIX
izin dan atribut yang diperluas, seperti ext4
atau
f2fs
. Untuk performa yang optimal, sistem file f2fs
disarankan untuk perangkat penyimpanan berbasis flash.
Saat melakukan pemeliharaan tidak ada aktivitas berkala, masalah pada platform
FI_TRIM
untuk mengadopsi media seperti halnya untuk penyimpanan internal.
Spesifikasi kartu SD saat ini tidak mendukung DISCARD
perintah; tetapi {i>kernel<i} kembali
ke perintah ERASE
,
{i>firmware kartu SD <i}mana yang dapat
digunakan untuk tujuan pengoptimalan.
Pengujian
Untuk menguji apakah penyimpanan yang dapat diadopsi berfungsi, jalankan uji 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 bawaan atau saat konektor USB sedang digunakan untuk adb aktif koneksi, gunakan:
adb shell sm set-virtual-disk true