Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Penyimpanan

Ikon HAL penyimpanan eksternal Android

Android telah berkembang dari waktu ke waktu untuk mendukung berbagai jenis dan fitur perangkat penyimpanan. Semua versi perangkat dukungan Android dengan penyimpanan tradisional , yang mencakup penyimpanan portabel dan emulasi. Penyimpanan portabel dapat disediakan oleh media fisik, seperti kartu SD atau USB, yaitu untuk transfer data / penyimpanan file sementara. Media fisik mungkin tetap bersama perangkat untuk waktu yang lama, tetapi tidak terikat ke perangkat dan dapat dilepas. Kartu SD telah tersedia sebagai penyimpanan portabel sejak Android 1.0; Android 6.0 menambahkan dukungan USB. Penyimpanan teremulasi disediakan dengan mengekspos sebagian penyimpanan internal melalui lapisan emulasi dan telah tersedia sejak Android 3.0.

Mulai Android 6.0, Android mendukung penyimpanan yang dapat diadopsi , yang disediakan oleh media fisik, seperti kartu SD atau USB, yang dienkripsi dan diformat agar berperilaku seperti penyimpanan internal. Penyimpanan yang dapat diadopsi dapat menyimpan semua jenis data aplikasi.

Izin

Akses ke penyimpanan eksternal dilindungi oleh berbagai izin Android. Mulai Android 1.0, akses tulis dilindungi dengan izin WRITE_EXTERNAL_STORAGE . Mulai Android 4.1, akses baca dilindungi dengan izin READ_EXTERNAL_STORAGE .

Mulai Android 4.4, pemilik, grup, dan mode file di perangkat penyimpanan eksternal sekarang disintesis berdasarkan struktur direktori. Ini memungkinkan aplikasi untuk mengelola direktori khusus paket mereka di penyimpanan eksternal tanpa mengharuskan mereka memiliki izin WRITE_EXTERNAL_STORAGE luas. Misalnya, aplikasi dengan nama paket com.example.foo sekarang dapat dengan bebas mengakses Android/data/com.example.foo/ di perangkat penyimpanan eksternal tanpa izin. Izin yang disintesis ini dicapai dengan membungkus perangkat penyimpanan mentah dalam daemon FUSE.

Mulai Android 10, aplikasi yang menargetkan Android 9 dan yang lebih rendah default ke penyimpanan lama, dan dapat memilih untuk penyimpanan terisolasi. Aplikasi yang menargetkan Android 10 dan secara default menggunakan penyimpanan terisolasi dapat memilih untuk tidak menggunakannya untuk sementara . Gunakan atribut manifes requestLegacyExternalStorage , yang mengontrol model penyimpanan, untuk mengubah status default.

Karena izin READ_EXTERNAL_STORAGE dan WRITE_EXTERNAL_STORAGE dibatasi secara lunak, jika penginstal tidak memasukkan aplikasi ke daftar putih, izin tersebut mengontrol akses ke koleksi aural dan visual saja, tanpa akses ke kartu SD. Ini berlaku bahkan jika aplikasi meminta penyimpanan lama. Untuk informasi lebih lanjut tentang pembatasan keras dan pembatasan lunak, lihat Pembatasan keras dan lunak di Android 10 .

Jika pemasang memasukkan izin ke dalam daftar putih, aplikasi yang berjalan dalam mode lama mendapatkan perilaku izin tanpa isolasi. Izin mengontrol akses kartu SD, dan koleksi aural dan visual. Ini terjadi jika aplikasi menargetkan Android 9 atau lebih rendah dan tidak memilih untuk menggunakan penyimpanan terisolasi, atau menargetkan Android 10 dan memilih tidak ikut.

Status daftar putih hanya dapat ditentukan pada waktu penginstalan, dan tidak dapat diubah hingga aplikasi telah diinstal.

Untuk informasi selengkapnya tentang menyetel izin READ_EXTERNAL_STORAGE , lihat setWhitelistedRestrictedPermissions() di kelas PackageInstaller.SessionParams .

Izin waktu proses

Android 6.0 memperkenalkan model izin waktu proses baru di mana aplikasi meminta kemampuan saat diperlukan saat waktu proses. Karena model baru menyertakan izin READ/WRITE_EXTERNAL_STORAGE , platform perlu memberikan akses penyimpanan secara dinamis tanpa mematikan atau memulai ulang aplikasi yang sudah berjalan. Ini dilakukan dengan mempertahankan tiga tampilan berbeda dari semua perangkat penyimpanan yang dipasang:

  • /mnt/runtime/default ditampilkan ke aplikasi tanpa izin penyimpanan khusus, dan ke namespace root tempat adbd dan komponen sistem lainnya berada.
  • /mnt/runtime/read ditampilkan ke aplikasi dengan READ_EXTERNAL_STORAGE (Setel LEGACY_STORAGE untuk Android 10)
  • /mnt/runtime/write ditampilkan ke aplikasi dengan WRITE_EXTERNAL_STORAGE

Pada waktu bercabang Zygote, kami membuat ruang nama mount untuk setiap aplikasi yang berjalan dan mengikat tampilan awal yang sesuai ke tempatnya. Nanti, saat izin waktu proses diberikan, vold melompat ke ruang nama pemasangan dari aplikasi yang sudah berjalan dan mengikat pemasangan tampilan yang telah diupgrade ke tempatnya. Perhatikan bahwa penurunan izin selalu mengakibatkan aplikasi dimatikan.

setns() digunakan untuk mengimplementasikan fitur ini membutuhkan setidaknya Linux 3.8, tetapi patch telah berhasil di-backport ke Linux 3.4. Tes PermissionsHostTest CTS dapat digunakan untuk memverifikasi perilaku kernel yang benar.