Android tashqi xotirasi: bu nima, tashuvchilar turlari va ishlab chiqishda qanday ishlash kerak

Muallif: IT Sectr Nashr etilgan: 2026-03-13 O'qish vaqti: 11 daq

Mobil qurilmalardagi tashqi xotira — bu almashtiriladigan ma’lumot tashuvchisi bo‘lib, tegishli ruxsatlarga ega har qanday dastur unga kirishi mumkin. Android Open Source Project, 2026, Android 10 dan boshlab, Google Scoped Storage — fayl tizimiga to‘g‘ridan-to‘g‘ri kirishni cheklaydigan va umumiy media fayllar bilan ishlash uchun MediaStore API dan foydalanishni talab qiladigan modelni joriy qildi. Bunday yondashuv foydalanuvchi ma’lumotlarining xavfsizligini oshiradi va ilovalar o‘rtasida axborot sizib chiqishining oldini oladi.

Asosiy

  • External Storage — almashtiriladigan xotira (SD-karta, USB-OTG), turli ilovalar tomonidan o‘qish va yozish uchun mavjud
  • Scoped Storage Android 10+ da fayl tizimiga to‘g‘ridan-to‘g‘ri kirishni cheklaydi va uni MediaStore API bilan almashtiradi
  • iOS SD-kartalarni qo‘llab-quvvatlamaydi — tashqi fayllarga kirish Document Picker orqali amalga oshiriladi
  • Ruxsatlar READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE Android 9 va undan past versiyalari uchun majburiy
  • Formatlash SD-kartani ichki yoki ko‘chma xotira sifatida formatlash kirish va shifrlash modelini belgilaydi

Mobil qurilmalarda tashqi xotira nima?

Tashqi xotira — bu dasturning himoyalangan Sandbox qutisiga kirmaydigan va boshqa dasturlar uchun mavjud bo‘lgan xotira maydoni. Android da bu atama odatda SD-kartani anglatadi, ammo tashqi xotira shuningdek OTG-adapter orqali ulangan USB-drayvlar va fayl tizimi darajasida integratsiyalangan bulut disklarini ham o‘z ichiga oladi.

Android da tashqi xotira ikkita asosiy rejimda taqdim etiladi: ko‘chma (portable) va ichki (adoptable). SD-kartani ko‘chma xotira sifatida formatlashda u almashtiriladigan bo‘lib qoladi va FAT32 yoki exFAT da formatlanadi. Adoptable storage rejimida karta ext4 da formatlanadi va AES-128 bilan shifrlanadi, shundan so‘ng tizim uni ichki xotiraning kengaytmasi sifatida qabul qiladi. Adoptable rejimi Android 6.0 Marshmallow dan boshlab mavjud, ammo qurilma ishlab chiqaruvchilari ko‘pincha bu imkoniyatni o‘z proshivkalarida o‘chiradi. Google Play Console statistikasiga ko‘ra, Android qurilmalarining faqat 12% adoptable storage ni qo‘llab-quvvatlaydi, shuning uchun SD-karta orqali ichki xotirani kengaytirishga yagona variant sifatida tayanib qolish tavsiya etilmaydi.

Mobil iOS an’anaviy SD-kartalar mavjud emas. Apple yopiq arxitekturadan foydalanadi, bunda barcha xotira ichki flesh-xotira va iCloud ga asoslangan. Tashqi drayvlar Lightning yoki USB-C porti orqali qo‘llab-quvvatlanadi, ammo ularga kirish Files tizim fayl menejeri va Document Picker bilan integratsiyalashgan ilovalar bilan cheklangan. Foydalanuvchi tashqi manbadan qaysi fayllarni ochishni o‘zi hal qiladi — ilova ulangan drayvni aniq roziliksiz skanerlay olmaydi.

Tashqi tashuvchilar turlari va ularning xususiyatlari

Tanlov tashqi tashuvchi tezlik, hajm va ko‘chmalikka bo‘lgan talablarga bog‘liq. Har xil turdagi tashuvchilar mobil ilovalarda turli tezlik xususiyatlariga, fayl tizimlariga va foydalanish stsenariylariga ega.

Tashuvchi turiMaks. hajmO‘qish tezligiFayl tizimi
SD UHS-I2 TB104 MB/s gachaexFAT / FAT32
SD UHS-II2 TB312 MB/s gachaexFAT / FAT32
USB 3.0 OTG2 TB400 MB/s gachaexFAT / NTFS / FAT32
USB-C SSD4 TB1000 MB/s gachaexFAT / APFS / NTFS

SD-kartalar va tezlik sinflari

SD-kartalar yozish tezligi bo‘yicha tasniflanadi: Class 10 (10 MB/s), U1 (10 MB/s), U3 (30 MB/s), V30 (30 MB/s) va V90 (90 MB/s). 4K video yozish uchun kamida U3 yoki V30 karta talab qilinadi. Katta media fayllar bilan ishlaydigan mobil ilovalar (foto qayta ishlash, video montaj) uchun U3 sinfi va undan yuqori kartalardan foydalanish tavsiya etiladi. Karta tezligi to‘g‘ridan-to‘g‘ri ilova ish faoliyatiga ta’sir qiladi: Class 10 kartasiga 4K video yozish o‘tkazish qobiliyati yetarli emasligi sababli kadrlarning tushib qolishiga olib kelishi mumkin. Ilova uchun SD-karta tanlashda nafaqat tezlik sinfiga, balki Application Performance Class reytingiga ham e’tibor bering: A1 va A2 ma’lumotlar bazalari va ilova keshi ishlashi uchun muhim bo‘lgan tasodifiy o‘qish va yozishning minimal ish faoliyatini ko‘rsatadi.

USB-OTG drayvlar

USB-OTG (On-The-Go) mobil qurilmaga tashqi USB-drayvlarni adapter orqali ulash imkonini beradi. Android OTG ni 3.1 versiyasidan boshlab qo‘llab-quvvatlaydi, ammo drayvni ulash uchun fayl tizimini qo‘llab-quvvatlaydigan yadro talab qilinadi. FAT32 va exFAT standart sifatida qo‘llab-quvvatlanadi, NTFS — faqat moslashtirilgan yadroga ega qurilmalarda yoki Paragon kutubxonasi orqali. iOS da USB-drayvlarni qo‘llab-quvvatlash iOS 13 bilan Files ilovasi bilan birga paydo bo‘ldi. Drayv bilan ishlash uchun ilova UIDocumentPickerViewController dan foydalanishi kerak, u faqat foydalanuvchi tanlagan fayllarga kirishni ochadi — iOS drayvning fayl tizimiga to‘liq kirishni ta’minlamaydi.

Bulutli xotira kengaytma sifatida

Bulutli xizmatlar — iCloud, Google Drive, Dropbox — tizim provayderlari orqali qurilmaning fayl tizimiga integratsiyalanishi mumkin. iOS da iCloud Drive ilovaning Sandbox konteynerining bir qismidir va fayllar avtomatik ravishda foydalanuvchi qurilmalari o‘rtasida sinxronlanadi. Android da Google Drive fayllarni o‘qish va yozish uchun API ni taqdim etadi, ammo fayl tizimiga to‘g‘ridan-to‘g‘ri ulanish amalga oshirilmaydi. Katta hajmdagi ma’lumotlar bilan ishlaydigan mobil ilovalar uchun bulutli xotira SD-kartaga alternativa bo‘lib xizmat qilishi mumkin, ayniqsa kengaytirish uyasi bo‘lmagan qurilmalarda.

Android da tashqi xotira bilan qanday ishlash kerak

bilan ishlash tashqi xotira Android da operatsion tizim versiyasiga va Scoped Storage modeliga bog‘liq. Fayllarga kirish jarayoni Android 9 va undan past, Android 10–12 va Android 13+ uchun farq qiladi.

MediaStore API orqali kirish

dan boshlab, Android 10, umumiy media fayllarga kirishning asosiy usuli MediaStore API hisoblanadi. Bu API umumiy xotirada tasvirlar, videolar va audio fayllarni o‘qish va yozish uchun yagona interfeysni taqdim etadi. Ilova o‘z fayllariga kirish uchun READ_EXTERNAL_STORAGE ruxsatini talab qilmaydi, ammo boshqa ilovalarning fayllarini o‘qish uchun baribir foydalanuvchining aniq ruxsati kerak. MediaStore media fayllarni avtomatik indekslaydi va ularni so‘rash uchun ContentResolver ni taqdim etadi.

kotlin
val collection = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
} else {
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI
}

val projection = arrayOf(
    MediaStore.Images.Media._ID,
    MediaStore.Images.Media.DISPLAY_NAME
)

val cursor = contentResolver.query(collection, projection, null, null, null)

So‘rovni bajarganingizdan so‘ng, siz fayllarning URI larini o‘z ichiga olgan Cursor ni olasiz. Faylni o‘qish uchun InputStream ni contentResolver.openInputStream(uri) orqali oching. Yozish xuddi shunday contentResolver.openOutputStream(uri) orqali amalga oshiriladi. MediaStore nom konfliktlarini avtomatik boshqaradi va contentResolver.insert(uri, values) orqali yangi fayllarni qo‘shish imkoniyatini taqdim etadi, bu yaratilgan faylning URI sini qaytaradi.

SAF orqali ixtiyoriy fayllar bilan ishlash

Storage Access Framework (SAF) — tavsiya etilgan usul Android 10+ da ixtiyoriy fayllarga kirish uchun. SAF fayl tanlash tizim dialogini taqdim etadi, bu orqali foydalanuvchi ilovaga muayyan fayl yoki katalogga kirish huquqini beradi. Ilova qurilma qayta ishga tushirilgunga qadar yoki sozlamalar orqali ruxsat aniq bekor qilingunga qadar amal qiladigan kirish URI sini oladi. SAF READ_EXTERNAL_STORAGE yoki WRITE_EXTERNAL_STORAGE ruxsatlarini talab qilmaydi, bu Google Play da nashr qilishni soddalashtiradi va ruxsat so‘rovlari sonini kamaytiradi.

kotlin
val requestCode = 42
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
intent.addFlags(
    Intent.FLAG_GRANT_READ_URI_PERMISSION
        or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
)
startActivityForResult(intent, requestCode)

iOS da tashqi xotira bilan qanday ishlash kerak

iOS da tashqi fayllar bilan ishlash UIDocumentPickerViewController orqali amalga oshiriladi, uni foydalanuvchi muayyan fayllar yoki kataloglarni tanlash uchun ochadi. Ilova tashqi drayvning fayl tizimiga to‘g‘ridan-to‘g‘ri kirish huquqiga ega emas — faqat foydalanuvchi aniq tanlagan fayllarga. Faylni tanlagandan so‘ng, ilova Sandbox konteynerida vaqtinchalik URL manzilini oladi va FileManager orqali fayl bilan ishlashi mumkin.

UIDocumentPickerViewController dan foydalanish

UIDocumentPickerViewController foydalanuvchiga istalgan mavjud manbadan: iCloud Drive, ulangan USB-drayv, uchinchi tomon bulut xizmatidan bir yoki bir nechta faylni tanlash imkonini beradi. Tanlovdan so‘ng, boshqaruvchi ilova sessiya davomida o‘qiy oladigan URL manzillari massivini qaytaradi. Ilovani yopgandan so‘ng kirishni saqlab qolish uchun startAccessingSecurityScopedResource() ni chaqirish va UserDefaults da xavfsiz bookmark ni saqlash kerak.

swift
let picker = UIDocumentPickerViewController(
    forOpeningContentTypes: [.data, .image],
    asCopy: true
)
picker.delegate = self

func documentPicker(
    controller: UIDocumentPickerViewController,
    didPickDocumentsAt urls: [URL]
) {
    guard let url = urls.first else { return }
    let data = try Data(contentsOf: url)
}

Parametr asCopy: true iOS faylni ilovaning Sandbox konteyneriga nusxalashini anglatadi va ilova asl fayldan mustaqil bo‘lgan o‘z nusxasini oladi. Agar asCopy: false ko‘rsatilgan bo‘lsa, ilova asl faylga havola oladi, ammo unga kirish uchun url.startAccessingSecurityScopedResource() ni chaqirish kerak. Bu chaqiruvsiz faylni o‘qish istisnoni keltirib chiqaradi. Fayl bilan ishlashni tugatgandan so‘ng, resursni yopish va deskriptorlar sizib chiqishining oldini olish uchun url.stopAccessingSecurityScopedResource() ni chaqirishni unutmang.

Tashqi xotiraning cheklovlari va xavfsizligi

Xavfsizlik tashqi xotiraning xavfsizligi Internal Storage dan past, chunki fayllar boshqa ilovalar uchun mavjud. READ_EXTERNAL_STORAGE ruxsatiga ega har qanday ilova SD-kartadagi barcha fayllarni o‘qishi mumkin, shu jumladan ilovangiz maxfiy ma’lumotlarni vaqtinchalik saqlash uchun yaratgan fayllarni. Zararli ilova SD-kartani skanerlab, agar ular shifrlanmagan bo‘lsa, foydalanuvchi ma’lumotlarini chiqarib olishi mumkin. Shuning uchun autentifikatsiya tokenlari, parollar yoki foydalanuvchining shaxsiy ma’lumotlarini tashqi xotirada ochiq holda saqlash qat’iyan tavsiya etilmaydi.

Android 10+ da Scoped Storage ilovalarning umumiy fayl tizimiga kirish imkoniyatlarini sezilarli darajada cheklaydi. Ilova ruxsatsiz faqat o‘zi yaratgan fayllarni o‘qishi mumkin, boshqa ilovalarning fayllariga kirish uchun esa SAF dialogi orqali foydalanuvchining aniq roziligi talab qilinadi. Biroq, bu cheklov SDK ning maqsadli versiyasi 29 dan past bo‘lgan ilovalarga taalluqli emas — ular eski model bo‘yicha ishlashda davom etadi, bu ilovalarini yangilamagan foydalanuvchilar uchun xavf tug‘diradi. Google Play 2021 yildan boshlab barcha yangi va yangilangan ilovalar uchun targetSdkVersion 29+ ni talab qiladi.

Formatlash va shifrlash — xavfsizlikning yana bir muhim jihati. Ko‘chma xotira sifatida formatlangan SD-karta tizim tomonidan standart holatda shifrlanmaydi. Hatto adoptable storage dan foydalanishda ham shifrlash faqat qurilma ishlab chiqaruvchisi proshivkada bu imkoniyatni yoqgan bo‘lsa faollashtiriladi. Tashqi xotirada saqlanadigan maxfiy ma’lumotlarni himoya qilish uchun EncryptedFile kutubxonasidan foydalaning, u har bir faylni tizim shifrlashidan qat’i nazar, AES256-GCM yordamida alohida shifrlaydi.

Tashqi xotira foydalanish bo‘yicha tavsiyalar

Samarali foydalanish tashqi xotira ma’lumotlar mavjudligi va xavfsizlik o‘rtasida muvozanatni talab qiladi. Foydalanuvchi fayllarining ishonchli saqlanishini ta’minlash uchun quyidagi qoidalarga rioya qiling.

  • Maxfiy ma’lumotlarni shifrlamasdan saqlamang. Tokenlar, parollar va shaxsiy ma’lumotlarni himoya qilish uchun EncryptedFile yoki EncryptedSharedPreferences dan foydalaning
  • Mavjudligini tekshiring tashqi xotirani yozishdan oldin tekshiring: SD-karta holatini tekshirish uchun Environment.getExternalStorageState() dan foydalaning. Karta chiqarilgan, shikastlangan yoki yozish uchun mavjud bo‘lmasligi mumkin
  • Scoped Storage dan foydalaning Android 10+ va SAF dan umumiy fayllarga kirish uchun foydalaning. Bu so‘ralgan ruxsatlar sonini kamaytiradi va foydalanuvchi tajribasini yaxshilaydi
  • Har doim istisnolarni boshqaring tashqi xotira bilan ishlashda. Fayl boshqa ilova tomonidan o‘chirilgan yoki o‘qish paytida ko‘chirilgan bo‘lishi mumkin, bu FileNotFoundException ni keltirib chiqaradi
  • Foydalanuvchini ogohlantiring tashqi xotiraga katta hajmdagi ma’lumotlarni yozishdan oldin. Tasdiqlash dialogini ko‘rsating va SAF orqali katalogni tanlash imkoniyatini bering

Shuni yodda tutish kerakki, tashqi xotira nosozliklar paytida ma’lumotlarning saqlanishini kafolatlamaydi. SD-kartalar, ayniqsa Class 4 va Class 6 sinfidagi byudjet modellari, cheklangan qayta yozish resursiga ega. Intensiv yozishda (masalan, logging yoki oqim ma’lumotlarini keshlash) karta bir necha oy ichida ishdan chiqishi mumkin. Bunday stsenariylar uchun ichki xotira yoki bulutli xotiradan foydalaning va tashqi xotirada faqat foydalanuvchi yo‘qotilishini maqbul deb biladigan fayllarni saqlang. StatFs va foydalanuvchiga fayl tizimining kritik xatolari haqida xabar bering.

Tez-tez so‘raladigan savollar

Android 13 da tashqi xotiraga kirish uchun ruxsat kerakmi?

Mobile Android 13+ ruxsati READ_EXTERNAL_STORAGE aniqroq ruxsatlar bilan almashtirildi: READ_MEDIA_IMAGES, READ_MEDIA_VIDEO va READ_MEDIA_AUDIO. Boshqa turdagi fayllarga kirish uchun SAF dan foydalaning.

SD-kartani ichki xotira sifatida formatlash mumkinmi?

Ha, adoptable storage funktsiyasi Android 6.0+ da mavjud. Karta AES-128 shifrlash bilan ext4 da formatlanadi. Biroq, ko‘plab ishlab chiqaruvchilar bu variantni o‘chiradi va qurilmalarning taxminan 88% adoptable storage ni qo‘llab-quvvatlamaydi.

Qurilmada SD-karta o‘rnatilganligini qanday tekshirish mumkin?

Metoddan foydalaning Environment.getExternalStorageState(), u holat qatorini qaytaradi. MEDIA_MOUNTED qiymati karta o‘qish va yozish uchun mavjudligini anglatadi. Boshqa qiymatlar xatolar yoki karta yo‘qligini ko‘rsatadi.

Scoped Storage va fayl tizimiga to‘liq kirish o‘rtasidagi farq nima?

Scoped Storage ilovani o‘z konteyneri va umumiy MediaStore media kutubxonasi bilan cheklaydi. To‘liq kirish qurilmadagi istalgan fayllarni o‘qishga ruxsat beradi. foydalanuvchi ma’lumotlarini oshiradi va yangi ilovalar uchun majburiydir.

SAF orqali SD-kartadagi faylga kirish uchun URI ni qanday olish mumkin?

Intent ni ACTION_OPEN_DOCUMENT_TREE harakati bilan ishga tushiring, u katalogni tanlash tizim dialogini ochadi. Tanlovdan so‘ng siz qayta ishga tushirishgacha amal qiladigan URI ruxsatini olasiz. Keyingi foydalanish uchun bu URI ni SharedPreferences da saqlang.

Xulosa

  • External Storage — almashtiriladigan xotira (SD-karta, USB-OTG), tegishli ruxsatlarga ega barcha ilovalar uchun mavjud
  • Scoped Storage Android 10+ da fayl tizimiga to‘g‘ridan-to‘g‘ri kirishni cheklaydi va media fayllar uchun MediaStore API ni joriy qiladi
  • iOS SD-kartalarni qo‘llab-quvvatlamaydi — tashqi fayllarga kirish faqat UIDocumentPickerViewController orqali
  • SD-kartalar tezlik sinflariga bo‘linadi: Class 10, U1, U3, V30, V90 — 4K video yozish uchun kamida U3 talab qilinadi
  • Xavfsizlik tashqi xotira ichki xotiradan past — yozishdan oldin maxfiy ma’lumotlarni shifrlang
  • Adoptable storage SD-kartani ichki xotira kengaytmasi sifatida ishlatish imkonini beradi, ammo faqat 12% qurilmalarda qo‘llab-quvvatlanadi
  • Tavsiya etiladi ixtiyoriy fayllarga kirish uchun SAF dan foydalanish va muhim ma’lumotlarni shifrlamasdan saqlamaslik

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing