Wat is het PLIST-bestandsformaat?
Bestanden in het .plist-formaat zijn instellingenbestanden die configuratie- en eigenschapsinformatie opslaan voor veel programma's in de macOS-omgeving. Ze worden ook wel voorkeurenbestanden genoemd. .plist-bestanden slaan vaak gebruikersinstellingen en applicatiegegevens op en zijn een standaardelement van Apple's Core Foundation-systeem - gebruikt in macOS, iOS, iPadOS en andere Apple-platforms.
.plist-bestanden kunnen op twee manieren worden opgeslagen - als tekst of binair. De tekstvorm gebruikt XML, waardoor de bestandsinhoud geordend en menselijk leesbaar blijft. Bestanden die als tekst zijn opgeslagen, kunnen worden bekeken en bewerkt met elke tekstverwerker; speciale programma's zoals de ingebouwde Property List-editor van Xcode maken het bewerken echter eenvoudiger. De binaire vorm (herkenbaar aan de magic bytes bplist00 aan het begin van het bestand) is compacter en wordt meestal door het besturingssysteem zelf geschreven.
.plist-bestanden kunnen eenvoudig worden geconverteerd tussen de tekst- en binaire formaten met behulp van de opdrachtregel en het commando plutil. De conversiecommando's zijn:
- binair formaat naar XML:
plutil -convert xml1 file.plist - XML-formaat naar binair:
plutil -convert binary1 file.plist
De conventionele naam voor de primaire eigenschappenlijst van een app is Info.plist. Houd er altijd rekening mee of sleutelnamen in .plist-bestanden hoofdletters gebruiken, omdat ze hoofdlettergevoelig zijn wanneer ze door het systeem worden gelezen. Gerelateerde formaten zijn onder meer .mobileconfig voor apparaatconfiguratieprofielen en .strings voor lokalisatiegegevens.
Beveiliging & veiligheid
RISICO: LOWPlists zijn gegevens, geen uitvoerbare code, dus ze voeren zelf niets uit. Het realistische risico is defecten, geen malware: het handmatig bewerken van de voorkeuren of Info.plist van een app met een verkeerd type of sleutel kan ervoor zorgen dat de app niet meer start of niet correct werkt. Maak eerst een back-up van het bestand en geef op macOS de voorkeur aan het commando „defaults” boven het bewerken van actieve voorkeuren-plists (cfprefsd kan handmatige wijzigingen overschrijven). Plists in configuratieprofielen (.mobileconfig) kunnen de beveiligingsinstellingen van het apparaat wijzigen, dus installeer alleen profielen van bronnen die u vertrouwt.
Formaatdetails
in een notendopProgramma's die PLIST-bestanden openen
Technische details
diepe specificaties| Formaatvarianten | Twee coderingen delen de `.plist`-extensie: XML (tekstgebaseerd) and binair (`bplist`) |
| Binaire magic bytes | `bplist00` (8 bytes, ASCII) op byte-offset 0; afwezig in de XML-variant |
| MIME-type | `application/x-plist` |
| XML-root-element | `<plist version="1.0">` voorafgegaan door een `<!DOCTYPE plist ...>` declaratie |
| Scalaire datatypes | `string`, `integer`, `real`, `true`/`false` (boolean), `date` (ISO 8601), `data` (ruwe bytes) |
| Collectietypes | `array` (geordende lijst) en `dict` (key-value map); beide ondersteunen willekeurige nesting |
| Structuur binair formaat | Objecttabel + offset-tabel + vaste 32-byte trailer; trailer registreert objectaantal en positie van de offset-tabel |
| Base64-codering | XML `<data>` elementen coderen binaire blobs als Base64; het binaire formaat slaat ruwe bytes direct op |
| Tekstcodering (XML-vorm) | UTF-8 (standaard) of UTF-16 met BOM; gedeclareerd in de XML-verwerkingsinstructie |
| Hoofdlettergevoeligheid van sleutels | Dict-sleutelnamen zijn hoofdlettergevoelig; `CFBundleIdentifier` en `cfbundleidentifier` worden als verschillende sleutels behandeld |
| Veelvoorkomende locaties (macOS) | App-bundels (`Info.plist`), gebruikersvoorkeuren (`~/Library/Preferences/`), launch daemons en systeemconfiguratie |
| Conversietool | `plutil` (ingebouwd in macOS); valideert, converteert en wijzigt `.plist`-bestanden vanaf de opdrachtregel |
| Legacy ASCII-formaat | Een derde NeXTSTEP ASCII-syntaxis die `{` / `(` scheidingstekens gebruikt bestaat; macOS kan dit parsen maar produceert het tegenwoordig zelden |
| Gebruik van Entitlements | De `.plist`-structuur wordt hergebruikt voor `.entitlements`-bestanden die sandbox- en capability-rechten declareren tijdens code-signing |
| iOS/iPadOS-vereiste | Elke iOS- en iPadOS-app-bundel vereist een `Info.plist` waarin de bundle ID, weergavenaam, apparaatmogelijkheden en privacy-gebruiksstrings worden gedeclareerd |
| Uitgebracht | NeXTSTEP (late 1980s); current XML/binary forms with Mac OS X 10.0 (2001) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | developer.apple.com |
PLIST conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over PLIST-bestanden.