Android selalu mendukung aksesori penyimpanan eksternal (seperti kartu SD), tetapi aksesori ini secara historis terbatas pada penyimpanan file sederhana, karena sifatnya yang tidak permanen dan perlindungan data minimal yang ditawarkan ke penyimpanan eksternal tradisional. Android 6.0 memperkenalkan kemampuan untuk mengadaptasi media penyimpanan eksternal agar berfungsi seperti penyimpanan internal.
Saat media penyimpanan eksternal diadopsi, media tersebut akan diformat dan dienkripsi agar hanya berfungsi dengan satu perangkat Android dalam satu waktu. Karena media sangat terikat dengan perangkat Android yang mengadopsinya, media dapat menyimpan aplikasi dan data pribadi dengan aman untuk semua pengguna.
Saat pengguna memasukkan media penyimpanan baru (seperti kartu SD) di lokasi
yang dapat diadopsi, Android akan menanyakan cara mereka ingin menggunakan media tersebut. Mereka dapat memilih untuk
menggunakan media, yang memformat dan mengenkripsinya, atau mereka dapat terus menggunakannya
seperti apa adanya untuk penyimpanan file sederhana. Jika pengguna memilih untuk mengadopsi, platform akan menawarkan untuk
memigrasikan konten penyimpanan bersama utama (biasanya dipasang di
/sdcard
) ke media yang baru diadopsi, sehingga mengosongkan ruang yang berharga di
penyimpanan internal. Tidak seperti penyimpanan tradisional, yang dibatasi hingga 2 TB karena
penggunaan
MBR,
penyimpanan yang dapat diadopsi menggunakan
GPT
sehingga memiliki batas penyimpanan file sebesar ~9 ZB.
Aplikasi hanya dapat ditempatkan di media penyimpanan yang diadopsi jika developer telah
menunjukkan dukungan melalui atribut android:installLocation
.
Penginstalan baru aplikasi yang didukung secara otomatis ditempatkan di
perangkat penyimpanan dengan ruang kosong terbanyak, dan pengguna dapat memindahkan aplikasi yang didukung
di antara perangkat penyimpanan di aplikasi Setelan. Aplikasi yang dipindahkan ke media
yang diadopsi akan diingat saat media dikeluarkan,
dan ditampilkan kembali saat media dimasukkan kembali.
Keamanan
Platform ini secara acak membuat kunci enkripsi untuk setiap perangkat yang diadopsi dan menyimpannya di penyimpanan internal perangkat Android. Tindakan ini secara efektif membuat media yang diadopsi sama aman dengan penyimpanan internal. Kunci dikaitkan dengan perangkat yang diadopsi berdasarkan GUID partisi yang diadopsi.
Jika perangkat dikonfigurasi untuk menggunakan enkripsi berbasis file (FBE) di penyimpanan internalnya, penyimpanan yang dapat diadopsi akan menggunakan FBE dan enkripsi metadata. Jika tidak, penyimpanan yang dapat diadopsi akan menggunakan enkripsi disk penuh (FDE).
Tata letak di disk perangkat yang diadopsi sangat mencerminkan partisi data internal, termasuk label SELinux, dll. Jika multi-pengguna didukung di perangkat Android, perangkat penyimpanan yang diadopsi juga mendukung multi-pengguna dengan tingkat isolasi yang sama seperti penyimpanan internal.
Karena konten perangkat penyimpanan yang diadopsi sangat terkait 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 dokumentasi FBE dan dokumentasi enkripsi metadata untuk mengetahui cara mengonfigurasi FBE dan enkripsi metadata di 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 gaya TV, karena seluruh TV biasanya dipasang di lokasi yang stabil.
Saat pengguna menggunakan perangkat penyimpanan baru, platform akan menjalankan benchmark dan membandingkan performanya dengan penyimpanan internal. Jika perangkat yang diadopsi secara signifikan lebih lambat daripada penyimpanan internal, platform akan memperingatkan pengguna tentang kemungkinan pengalaman yang menurun. Benchmark ini berasal dari perilaku I/O aktual aplikasi Android populer. Saat ini, implementasi AOSP hanya akan memberi peringatan kepada pengguna di luar satu nilai minimum, tetapi produsen perangkat dapat menyesuaikannya 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 performa yang optimal, sistem file f2fs
direkomendasikan untuk perangkat penyimpanan berbasis flash.
Saat melakukan pemeliharaan tidak ada aktivitas berkala, platform akan mengeluarkan
FI_TRIM
ke media yang diadopsi seperti yang dilakukan untuk penyimpanan internal.
Spesifikasi kartu SD saat ini tidak mendukung perintah DISCARD
;
tetapi kernel kembali ke perintah ERASE
,
yang dapat dipilih firmware kartu SD 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 bawaan atau saat konektor USB digunakan untuk koneksi adb aktif, gunakan:
adb shell sm set-virtual-disk true