Jika anda pernah cuba mengurus fail pada peranti Android, anda mungkin perasan bahawa perkara berfungsi secara berbeza bergantung pada versi Android yang anda jalankan. Bermula dengan Android 10, Google memperkenalkan anjakan asas dalam cara apl berinteraksi dengan sistem fail. Perubahan ini, yang dikenali sebagai Storan Berskop, mentakrifkan semula peraturan sekitar membaca dan menulis fail pada storan kongsi. Bagi pengguna yang memuatkan apl, mengurus fail OBB atau bekerja dengan pengurus fail, memahami storan berskop adalah penting.
Dalam artikel ini, kami akan meneroka apa itu storan berskop, sebab Google melaksanakannya, cara ia memberi kesan kepada pengguna dan pembangun setiap hari dan maksudnya untuk sesiapa sahaja yang memasang fail APK atau XAPK di luar Gedung Play.
Masalah dengan Model Storan Lama
Sebelum Android 10, mana-mana apl yang meminta kebenaran READ_EXTERNAL_STORAGE atau WRITE_EXTERNAL_STORAGE boleh mengakses hampir mana-mana fail pada storan kongsi peranti. Ini termasuk foto, dokumen, muat turun dan juga fail yang dibuat oleh apl lain. Walaupun ini memudahkan pengurusan fail, ia mewujudkan kebimbangan privasi dan keselamatan yang serius.
Pertimbangkan aplikasi lampu suluh mudah. Di bawah model lama, jika anda memberikannya kebenaran storan, ia boleh membaca foto anda secara senyap, mengimbas dokumen anda yang dimuat turun, atau mengubah suai fail kepunyaan aplikasi lain. Tiada kawalan berbutir. Anda sama ada memberikan apl akses penuh kepada keseluruhan storan anda atau menafikannya sepenuhnya.
Akses yang luas ini membawa kepada masalah dunia sebenar. Sesetengah apl menuai data pengguna dengan mengimbas storan untuk fail sensitif. Yang lain meninggalkan fail yatim piatu yang berselerak dengan peranti lama selepas apl dinyahpasang. Google memerlukan penyelesaian yang mengimbangi kebolehgunaan dengan privasi, dan storan berskop adalah jawapan mereka.
Apakah Storan Skop Sebenarnya
Storan berskop secara asasnya mengubah hubungan antara apl dan sistem fail. Di bawah model ini, setiap apl mendapat kotak pasir peribadinya sendiri pada storan luaran, biasanya terletak di /Android/data/[package.name]/. Apl boleh membaca dan menulis secara bebas dalam kotak pasir mereka sendiri tanpa memerlukan sebarang kebenaran sama sekali.
Walau bagaimanapun, mengakses fail di luar kotak pasir ini memerlukan melalui API terkawal. Berikut ialah cara model baharu berfungsi:
Storan Khusus Apl
Setiap apl mempunyai direktori khusus yang hanya boleh diakses olehnya. Apabila apl dinyahpasang, direktori ini dibersihkan secara automatik. Tiada apl lain boleh membaca atau menulis ke lokasi ini tanpa akses root. Ini menghapuskan masalah fail yatim dan menghalang pengintipan data merentas aplikasi.
Koleksi Media
Untuk media kongsi seperti foto, video dan fail audio, Android menyediakan API MediaStore. Apl boleh menyumbang media kepada koleksi kongsi dan membaca media yang dibuat oleh apl lain, tetapi hanya melalui antara muka berstruktur ini. Apl boleh melihat medianya sendiri tanpa sebarang kebenaran, tetapi untuk mengakses media apl lain memerlukan kebenaran READ_MEDIA_IMAGES, READ_MEDIA_VIDEO atau READ_MEDIA_AUDIO yang diperkenalkan dalam Android 13.
Rangka Kerja Akses Storan
Untuk dokumen dan fail bukan media lain, apl mesti menggunakan Rangka Kerja Akses Storan (SAF). Ini memberikan pemilih fail sistem kepada pengguna, yang secara eksplisit memilih fail atau direktori yang boleh diakses oleh apl. Apl itu tidak pernah mendapat akses menyeluruh kepada keseluruhan sistem fail.
Kebenaran MANAGE_EXTERNAL_STORAGE
Untuk apl yang benar-benar memerlukan akses fail yang luas, seperti pengurus fail, alat sandaran dan perisian antivirus, Android menyediakan kebenaran MANAGE_EXTERNAL_STORAGE. Walau bagaimanapun, kebenaran ini memerlukan kelulusan khas daripada Google untuk apl yang diedarkan melalui Gedung Play dan pengguna mesti memberikannya secara manual melalui tetapan sistem dan bukannya dialog mudah.
Garis Masa Pelancaran
Google tidak menguatkuasakan storan berskop semalaman. Peralihan berlaku secara beransur-ansur:
- Android 10 (API 29): Storan berskop telah diperkenalkan tetapi apl boleh menarik diri menggunakan requestLegacyExternalStorage="true" dalam manifes mereka. Ini memberi masa kepada pembangun untuk menyesuaikan diri.
- Android 11 (API 30): Bendera warisan diabaikan untuk apl yang menyasarkan API 30 atau lebih tinggi. Storan berskop menjadi wajib untuk apl baharu dan dikemas kini di Gedung Play.
- Android 12 dan seterusnya: Penambahbaikan lanjut telah dibuat, termasuk kebenaran media butiran dan prestasi SAF yang lebih baik.
- Android 13 (API 33): Kebenaran READ_EXTERNAL_STORAGE yang luas telah ditamatkan dan memihak kepada kebenaran media tertentu.
- Android 14 (API 34): Akses foto dan video separa telah diperkenalkan, membenarkan pengguna memberikan akses kepada fail tertentu dan bukannya keseluruhan perpustakaan media.
Cara Storan Skop Mempengaruhi Pemuatan Side
Bagi pengguna yang memasang apl dari luar Gedung Play, storan berskop memperkenalkan beberapa cabaran praktikal yang patut difahami.
Memuat turun dan Mengakses Fail APK
Apabila anda memuat turun fail APK melalui penyemak imbas, ia biasanya mendarat dalam folder Muat Turun. Di bawah storan berskop, apl penyemak imbas memiliki fail tersebut. Jika anda ingin memasangnya menggunakan apl lain, seperti pengurus fail, pengurus fail tersebut memerlukan akses yang sesuai. Kebanyakan pengurus fail moden mengendalikan perkara ini dengan betul melalui SAF, tetapi pengurus fail yang lebih tua mungkin mengalami kesukaran.
Pemasang pakej sistem masih boleh mengakses fail yang anda pilih secara eksplisit melalui pemilih fail, jadi aliran asas memuat turun dan memasang APK masih berfungsi. Walau bagaimanapun, aliran kerja pemasangan automatik yang bergantung pada akses laluan fail langsung mungkin rosak.
Fail OBB dan Data Permainan
Di sinilah storan berskop mewujudkan geseran paling banyak untuk pemuat sisi. Banyak permainan besar menggunakan fail OBB (Opaque Binary Blob) yang disimpan dalam /Android/obb/[package.name]/. Di bawah model lama, anda hanya boleh menyalin fail OBB ke direktori yang betul menggunakan mana-mana pengurus fail.
Dengan storan berskop, direktori /Android/obb/ adalah terhad. Pada Android 11 dan lebih baharu, apl biasa tidak boleh menulis ke direktori OBB apl lain. Ini bermakna jika anda memuat turun fail XAPK yang mengandungi data OBB, pemasang memerlukan pengendalian khas untuk meletakkan fail tersebut dengan betul.
Alat seperti Pengekstrak OBB kami boleh membantu anda mengekstrak fail OBB daripada pakej XAPK, tetapi meletakkannya dalam direktori yang betul pada versi Android yang lebih baharu mungkin memerlukan penggunaan pengurus fail dengan kebenaran MANAGE_EXTERNAL_STORAGE atau menggunakan arahan ADB daripada komputer.
Pertimbangan Pemasangan XAPK
Fail XAPK menggabungkan APK bersama data OBB dan kadangkala memisahkan konfigurasi APK. Memasang ini pada peranti yang menjalankan Android 11 atau lebih baharu memerlukan pemasang yang memahami sekatan storan berskop. Pemasang perlu sama ada memegang kebenaran MANAGE_EXTERNAL_STORAGE atau menggunakan API yang sesuai untuk meletakkan fail OBB di lokasi yang betul.
Ini adalah salah satu sebab mengapa menukar fail XAPK kepada format APK standard boleh berguna. APK kendiri tidak memerlukan penempatan fail OBB, memudahkan proses pemasangan pada versi Android yang lebih baharu. Anda boleh menggunakan XAPK kepada penukar APK kami untuk mengekstrak APK asas daripada pakej XAPK.
Perkara yang Pembangun Perlu Tahu
Jika anda sedang membangunkan apl Android, storan berskop memerlukan pemikiran semula cara anda mengendalikan fail:
- Gunakan direktori khusus apl untuk sebarang fail yang hanya diperlukan oleh apl anda. Ini tidak memerlukan kebenaran dan dibersihkan secara automatik apabila dinyahpasang.
- Gunakan MediaStore untuk foto, video dan audio yang sepatutnya boleh dilihat oleh apl lain dan bertahan daripada penyahpasangan.
- Gunakan SAF apabila apl anda perlu berfungsi dengan dokumen atau direktori yang dipilih pengguna.
- Laluan Elakkan laluan fail berkod keras. seperti /sdcard/MyApp/ tidak lagi boleh dipercayai. Gunakan Context.getExternalFilesDir() sebaliknya.
- Uji pada berbilang tahap API. Gelagat berbeza dengan ketara antara Android 10, 11, 13 dan 14.
Strategi Migrasi
Jika apl anda sebelum ini menyimpan fail dalam storan kongsi, anda memerlukan pelan penghijrahan. Pendekatan yang disyorkan ialah menyalin fail sedia ada ke storan khusus apl pada pelancaran pertama selepas kemas kini, kemudian padamkan salinan lama. Gunakan Environment.getExternalStorageDirectory() dengan bendera warisan semasa tempoh peralihan untuk membaca fail lama, kemudian alihkannya ke lokasi baharu.
Salah Tanggapan Biasa
"Storan berskop bermakna apl tidak boleh mengakses sebarang fail"
Ini adalah palsu. Apl masih boleh mengakses fail mereka sendiri secara bebas, menyumbang kepada koleksi media yang dikongsi dan meminta akses kepada fail tertentu melalui pemilih sistem. Apa yang berubah ialah aplikasi tidak lagi boleh menyemak imbas keseluruhan sistem fail secara senyap.
"Pengurus fail rosak pada versi Android baharu"
Pengurus fail yang meminta MANAGE_EXTERNAL_STORAGE masih berfungsi. Pengguna hanya perlu memberikan kebenaran khas ini melalui tetapan. Kebanyakan pengurus fail popular telah pun menyesuaikan diri dengan keperluan ini.
"Storan berskop hanya mempengaruhi kad SD"
Storan berskop digunakan pada semua storan kongsi, termasuk storan kongsi dalaman. Istilah "storan luaran" dalam Android merujuk kepada storan kongsi yang boleh diakses oleh berbilang apl, tidak semestinya kad SD fizikal.
Petua Praktikal untuk Pengguna
Jika anda kerap memuatkan apl atau mengurus fail pada peranti Android anda, berikut ialah beberapa cadangan praktikal:
- Gunakan pengurus fail moden yang menyokong MANAGE_EXTERNAL_STORAGE. Apl seperti Solid Explorer, MiXplorer dan Total Commander telah disesuaikan dengan baik kepada storan berskop.
- Berikan kebenaran dengan berhati-hati. Apabila pengurus fail meminta "Akses semua fail," faham bahawa ini adalah kebenaran MANAGE_EXTERNAL_STORAGE dan diperlukan untuk kefungsian penuh.
- Gunakan ADB untuk operasi fail yang degil. Jika anda tidak boleh meletakkan fail OBB melalui pengurus fail, menyambungkan peranti anda ke komputer dan menggunakan adb push memintas sekatan storan berskop sepenuhnya.
- Tukar pakej kompleks kepada format yang lebih mudah. Jika fail XAPK memberi anda masalah pada peranti yang lebih baharu, mengekstrak komponen APK sahaja mungkin merupakan laluan yang paling tidak mempunyai rintangan.
- Pastikan apl pemasang anda dikemas kini. Versi lama pemasang XAPK mungkin tidak mengendalikan storan berskop dengan betul.
Masa Depan Storan Android
Google terus memperhalusi model storan dengan setiap keluaran Android. Android 14 memperkenalkan akses media separa, membenarkan pengguna berkongsi foto tertentu dengan aplikasi dan bukannya keseluruhan pustaka mereka. Android 15 dijangka membawa peningkatan selanjutnya pada prestasi dan kebolehgunaan Rangka Kerja Akses Storan.
Aliran ini jelas: Android sedang bergerak ke arah model yang membolehkan pengguna mengawal perkara yang boleh dilihat dan diubah suai oleh setiap apl. Walaupun ini menimbulkan beberapa geseran untuk pengguna berkuasa dan pemuat sisi, ia meningkatkan privasi dan keselamatan dengan ketara untuk pangkalan pengguna yang lebih luas.
Bekerja Dengan Storan Berskop Tanpa Memecah Data Apl
Storan berskop mewakili salah satu perubahan paling ketara pada seni bina Android dalam beberapa tahun kebelakangan ini. Dengan mengehadkan apl ke kotak pasir mereka sendiri dan memerlukan persetujuan pengguna yang jelas untuk akses yang lebih luas, Google telah meningkatkan postur privasi platform secara mendadak. Bagi pengguna yang memuatkan apl dan mengurus fail secara manual, memahami sekatan ini membantu anda mengatasi titik geseran sekali-sekala. Dan bagi pembangun, menyesuaikan diri dengan storan berskop bukanlah pilihan sebaliknya merupakan keperluan asas untuk pembangunan Android moden.
Memasang APK, meletakkan fail OBB dan hanya mengurus storan hari ke hari semuanya berjalan ke dalam sistem yang sama: storan berskop. Sebaik sahaja anda memahami cara ia berfungsi, andalah yang mengawal peranti anda, bukannya bergantung pada apl yang mungkin menyalahgunakan akses fail yang luas.