Als je ooit hebt geprobeerd bestanden op een Android-apparaat te beheren, heb je waarschijnlijk gemerkt dat de dingen anders werken, afhankelijk van welke versie van Android je gebruikt. Vanaf Android 10 introduceerde Google een fundamentele verandering in de manier waarop apps omgaan met het bestandssysteem. Deze wijziging, bekend als Omvangrijke opslag, herdefinieerde de regels rond het lezen en schrijven van bestanden op gedeelde opslag. Voor gebruikers die apps sideloaden, OBB-bestanden beheren of met bestandsbeheerders werken, is het begrijpen van gelimiteerde opslag essentieel.
In dit artikel onderzoeken we wat beperkte opslag is, waarom Google dit heeft geïmplementeerd, welke invloed dit heeft op gewone gebruikers en ontwikkelaars, en wat het betekent voor iedereen die APK- of XAPK-bestanden buiten de Play Store installeert.
Het probleem met het oude opslagmodel
Vóór Android 10 had elke app die om de toestemming READ_EXTERNAL_STORAGE of WRITE_EXTERNAL_STORAGE vroeg toegang tot vrijwel elk bestand op de gedeelde opslag van het apparaat. Dit omvatte foto's, documenten, downloads en zelfs bestanden die door andere apps waren gemaakt. Hoewel dit het bestandsbeheer gemakkelijk maakte, zorgde het voor ernstige problemen op het gebied van privacy en veiligheid.
Overweeg een eenvoudige zaklamp-app. Onder het oude model kon het, als je het toestemming gaf voor opslag, in stilte je foto's lezen, je gedownloade documenten scannen of zelfs bestanden wijzigen die tot andere applicaties behoorden. Er was geen sprake van gedetailleerde controle. Je hebt een app volledige toegang gegeven tot je volledige opslag, of je hebt deze volledig geweigerd.
Deze brede toegang leidde tot problemen in de echte wereld. Sommige apps verzamelden gebruikersgegevens door de opslag te scannen op gevoelige bestanden. Anderen lieten verweesde bestanden achter die het apparaat lang nadat de app was verwijderd onoverzichtelijk maakten. Google had een oplossing nodig die bruikbaarheid in evenwicht bracht met privacy, en beperkte opslag was hun antwoord.
Wat Scoped Storage feitelijk doet
Scoped storage verandert fundamenteel de relatie tussen apps en het bestandssysteem. Volgens dit model krijgt elke app zijn eigen privé-sandbox op externe opslag, meestal op /Android/data/[package.name]/. Apps kunnen vrij lezen en schrijven in hun eigen sandbox, zonder dat ze daarvoor toestemming nodig hebben.
Voor toegang tot bestanden buiten deze sandbox zijn echter gecontroleerde API's vereist. Zo werkt het nieuwe model:
App-specifieke opslag
Elke app heeft een speciale map waartoe alleen hij toegang heeft. Wanneer de app wordt verwijderd, wordt deze map automatisch opgeschoond. Geen enkele andere app kan naar deze locatie lezen of schrijven zonder root-toegang. Dit elimineert het probleem van verweesde bestanden en voorkomt het snuffelen van gegevens tussen apps.
Mediacollecties
Voor gedeelde media zoals foto's, video's en audiobestanden biedt Android de MediaStore API. Apps kunnen media bijdragen aan gedeelde collecties en media lezen die door andere apps zijn gemaakt, maar alleen via deze gestructureerde interface. Een app kan zijn eigen media zien zonder enige toestemming, maar voor toegang tot de media van andere apps zijn de READ_MEDIA_IMAGES-, READ_MEDIA_VIDEO- of READ_MEDIA_AUDIO-machtigingen vereist die in Android 13 zijn geïntroduceerd.
Kader voor opslagtoegang
Voor documenten en andere niet-mediabestanden moeten apps het Storage Access Framework (SAF) gebruiken. Dit presenteert een systeembestandskiezer aan de gebruiker, die expliciet kiest tot welke bestanden of mappen de app toegang heeft. De app krijgt nooit algemene toegang tot het volledige bestandssysteem.
De MANAGE_EXTERNAL_STORAGE-toestemming
Voor apps die echt brede bestandstoegang nodig hebben, zoals bestandsbeheerders, back-uptools en antivirussoftware, biedt Android de toestemming MANAGE_EXTERNAL_STORAGE. Deze toestemming vereist echter speciale goedkeuring van Google voor apps die via de Play Store worden gedistribueerd, en gebruikers moeten deze toestemming handmatig verlenen via systeeminstellingen in plaats van via een eenvoudig dialoogvenster.
De uitroltijdlijn
Google heeft bereikopslag niet van de ene op de andere dag afgedwongen. De overgang gebeurde geleidelijk:
- Android 10 (API 29): Scoped-opslag werd geïntroduceerd, maar apps konden zich afmelden voor het gebruik van requestLegacyExternalStorage="true" in hun manifest. Dit gaf ontwikkelaars de tijd om zich aan te passen.
- Android 11 (API 30): De verouderde vlag werd genegeerd voor apps die API 30 of hoger targeten. Scoped-opslag werd verplicht voor nieuwe en bijgewerkte apps in de Play Store.
- Android 12 en hoger: Er zijn verdere verfijningen aangebracht, waaronder gedetailleerde mediarechten en verbeterde SAF-prestaties.
- Android 13 (API 33): De brede machtiging READ_EXTERNAL_STORAGE is verouderd ten gunste van specifieke mediamachtigingen.
- Android 14 (API 34): Er is gedeeltelijke foto- en videotoegang geïntroduceerd, waardoor gebruikers toegang kunnen verlenen tot specifieke bestanden in plaats van tot volledige mediabibliotheken.
Hoe scoped-opslag sideloading beïnvloedt
Voor gebruikers die apps van buiten de Play Store installeren, introduceert beperkte opslag enkele praktische uitdagingen die de moeite waard zijn om te begrijpen.
APK-bestanden downloaden en openen
Wanneer u een APK-bestand via een browser downloadt, komt het meestal in de map Downloads terecht. Bij beperkte opslag is de browser-app eigenaar van dat bestand. Als u het wilt installeren met een andere app, zoals een bestandsbeheerder, heeft die bestandsbeheerder de juiste toegang nodig. De meeste moderne bestandsbeheerders gaan hier correct mee om via SAF, maar oudere kunnen hier moeite mee hebben.
Het systeempakketinstallatieprogramma heeft nog steeds toegang tot bestanden die u expliciet selecteert via de bestandskiezer, dus de basisstroom voor het downloaden en installeren van een APK werkt nog steeds. Geautomatiseerde installatieworkflows die afhankelijk zijn van directe toegang tot het bestandspad kunnen echter kapot gaan.
OBB-bestanden en spelgegevens
Dit is waar ruime opslag de meeste wrijving veroorzaakt voor zijladers. Veel grote games gebruiken OBB-bestanden (Opaque Binary Blob) die zijn opgeslagen in /Android/obb/[package.name]/. Onder het oude model kon je eenvoudig OBB-bestanden naar de juiste map kopiëren met behulp van een bestandsbeheerder.
Bij beperkte opslag is de map /Android/obb/ beperkt. Op Android 11 en hoger kunnen reguliere apps niet schrijven naar de OBB-directory van een andere app. Dit betekent dat als u een XAPK-bestand downloadt dat OBB-gegevens bevat, het installatieprogramma speciale handelingen nodig heeft om die bestanden correct te plaatsen.
Tools zoals onze OBB-extractor kunnen u helpen OBB-bestanden uit XAPK-pakketten te extraheren, maar als u ze in de juiste map op nieuwere Android-versies wilt plaatsen, moet u mogelijk een bestandsbeheerder met MANAGE_EXTERNAL_STORAGE-toestemming gebruiken of ADB-opdrachten vanaf een computer gebruiken.
Overwegingen bij de XAPK-installatie
XAPK-bestanden bundelen een APK samen met OBB-gegevens en splitsen soms APK-configuraties. Om deze te installeren op apparaten met Android 11 of hoger is een installatieprogramma vereist dat de opslagbeperkingen begrijpt. Het installatieprogramma moet de machtiging MANAGE_EXTERNAL_STORAGE hebben of de juiste API's gebruiken om OBB-bestanden op de juiste locatie te plaatsen.
Dit is een reden waarom het converteren van XAPK-bestanden naar het standaard APK-formaat nuttig kan zijn. Voor een zelfstandige APK is het plaatsen van OBB-bestanden niet vereist, wat het installatieproces op nieuwere Android-versies vereenvoudigt. U kunt onze XAPK naar APK-converter gebruiken om de basis-APK uit een XAPK-pakket te extraheren.
Wat ontwikkelaars moeten weten
Als u Android-apps ontwikkelt, vereist de beperkte opslag dat u opnieuw nadenkt over de manier waarop u met bestanden omgaat:
- Gebruik app-specifieke mappen voor alle bestanden die alleen uw app nodig heeft. Deze vereisen geen rechten en worden automatisch opgeschoond bij het verwijderen.
- Gebruik MediaStore voor foto's, video's en audio die zichtbaar moeten zijn voor andere apps en de verwijdering moeten overleven.
- Gebruik SAF wanneer uw app moet werken met door de gebruiker geselecteerde documenten of mappen.
- Vermijd hardgecodeerde bestandspaden. Paden zoals /sdcard/MyApp/ zijn niet langer betrouwbaar. Gebruik in plaats daarvan Context.getExternalFilesDir().
- Test op meerdere API-niveaus. Het gedrag verschilt aanzienlijk tussen Android 10, 11, 13 en 14.
Migratiestrategieën
Als uw app eerder bestanden in gedeelde opslag heeft opgeslagen, heeft u een migratieplan nodig. De aanbevolen aanpak is om bij de eerste keer opstarten na de update bestaande bestanden naar app-specifieke opslag te kopiëren en vervolgens de oude exemplaren te verwijderen. Gebruik Environment.getExternalStorageDirectory() met de oude vlag tijdens de overgangsperiode om oude bestanden te lezen en deze vervolgens naar de nieuwe locatie te verplaatsen.
Veelvoorkomende misvattingen
"Scoped storage betekent dat apps geen toegang hebben tot bestanden"
Dit is niet waar. Apps hebben nog steeds vrij toegang tot hun eigen bestanden, kunnen bijdragen aan gedeelde mediacollecties en toegang vragen tot specifieke bestanden via de systeemkiezer. Wat veranderd is, is dat apps niet langer stil door het hele bestandssysteem kunnen bladeren.
'Bestandsbeheerders werken niet meer op nieuwe Android-versies'
Bestandsbeheerders die MANAGE_EXTERNAL_STORAGE aanvragen, werken nog steeds. De gebruiker hoeft alleen deze speciale toestemming te verlenen via de instellingen. De meeste populaire bestandsbeheerders hebben zich al aan deze vereiste aangepast.
"Scoped-opslag heeft alleen invloed op de SD-kaart"
Scoped-opslag is van toepassing op alle gedeelde opslag, inclusief interne gedeelde opslag. De term 'externe opslag' in Android verwijst naar gedeelde opslag die toegankelijk is voor meerdere apps, niet noodzakelijkerwijs een fysieke SD-kaart.
Praktische tips voor gebruikers
Als u regelmatig apps sideloadt of bestanden beheert op uw Android-apparaat, volgen hier enkele praktische aanbevelingen:
- Gebruik een moderne bestandsbeheerder die MANAGE_EXTERNAL_STORAGE ondersteunt. Apps zoals Solid Explorer, MiXplorer en Total Commander hebben zich goed aangepast aan opslag met een beperkt bereik.
- Verleen zorgvuldig toestemmingen. Wanneer een bestandsbeheerder vraagt om "Toegang tot alle bestanden", moet u begrijpen dat dit de MANAGE_EXTERNAL_STORAGE-machtiging is en noodzakelijk is voor volledige functionaliteit.
- Gebruik ADB voor hardnekkige bestandsbewerkingen. Als u OBB-bestanden niet via bestandsbeheer kunt plaatsen, kunt u door uw apparaat op een computer aan te sluiten en adb push te gebruiken de opslagbeperkingen volledig omzeilen.
- Converteer complexe pakketten naar eenvoudiger formaten. Als een XAPK-bestand problemen geeft op een nieuwer apparaat, kan het extraheren van alleen de APK-component de weg van de minste weerstand zijn.
- Houd uw installatie-apps up-to-date. Oudere versies van XAPK-installatieprogramma's kunnen mogelijk niet correct omgaan met de scoped-opslag.
De toekomst van Android-opslag
Google blijft het opslagmodel verfijnen bij elke Android-release. Android 14 introduceerde gedeeltelijke mediatoegang, waardoor gebruikers specifieke foto's konden delen met een app in plaats van met hun hele bibliotheek. Android 15 zal naar verwachting verdere verbeteringen aanbrengen in de prestaties en bruikbaarheid van het Storage Access Framework.
De trend is duidelijk: Android evolueert in de richting van een model waarin gebruikers nauwkeurige controle hebben over wat elke app kan zien en wijzigen. Hoewel dit voor enige wrijving zorgt voor ervaren gebruikers en sideloaders, verbetert het de privacy en veiligheid voor de bredere gebruikersbasis aanzienlijk.
Werken met scoped-opslag zonder app-gegevens te verbreken
Scoped storage vertegenwoordigt een van de belangrijkste veranderingen in de Android-architectuur van de afgelopen jaren. Door apps te beperken tot hun eigen sandboxes en expliciete toestemming van de gebruiker te vereisen voor bredere toegang, heeft Google de privacypositie van het platform dramatisch verbeterd. Voor gebruikers die apps sideloaden en bestanden handmatig beheren, helpt het begrijpen van deze beperkingen u om de incidentele knelpunten te omzeilen. En voor ontwikkelaars is aanpassing aan beperkte opslag niet optioneel, maar eerder een fundamentele vereiste voor moderne Android-ontwikkeling.
Het installeren van APK's, het plaatsen van OBB-bestanden en het dagelijks beheren van de opslag komen allemaal op hetzelfde systeem terecht: beperkte opslag. Als u eenmaal begrijpt hoe het werkt, bent u degene die de controle heeft over uw apparaat, in plaats van dat u overgeleverd bent aan apps die misbruik kunnen maken van brede bestandstoegang.