Does Xcode use build settings to generate information property list files?

Info.plist i Xcode: Din Apps Konfigurationshjerte

12/02/2025

Rating: 4.73 (15147 votes)

I hjertet af enhver iOS- eller macOS-applikation ligger en lille, men utrolig vigtig fil kaldet Info.plist. Denne fil er mere end blot en tekstfil; den er din apps identitetskort og instruktionsbog for operativsystemet. Uden den ville dit program ikke vide, hvordan det skal starte, hvad det hedder, eller hvilke ressourcer det har brug for. At forstå og mestre Info.plist er afgørende for enhver appudvikler, da den giver dig mulighed for at finjustere din applikations adfærd og tilpasse den til forskellige scenarier, herunder forskellige build-konfigurationer som udvikling, staging og produktion.

Does Xcode use build settings to generate information property list files?

Denne artikel vil dykke ned i Info.plist's verden, fra dens grundlæggende opbygning til avancerede teknikker som lokalisering og konfiguration baseret på build-indstillinger. Vi vil udforske, hvordan Xcode automatisk genererer og hjælper dig med at redigere denne fil, og hvordan du kan udnytte dens fulde potentiale til at skabe robuste og fleksible applikationer.

Indholdsfortegnelse

Hvad er Info.plist i Xcode?

Info.plist, en forkortelse for 'Information Property List', er en struktureret tekstfil, der indeholder essentiel konfigurationsinformation for et bundtet eksekverbart program. Forestil dig det som en DNA-streng for din app, der definerer dens grundlæggende egenskaber og opførsel. Filen er typisk kodet ved hjælp af Unicode UTF-8 og dens indhold er struktureret ved hjælp af XML. Rod-XML-noden er en ordbog, hvis indhold er et sæt nøgler og værdier, der beskriver forskellige aspekter af bundtet.

Operativsystemet bruger disse nøgler og værdier til at indhente information om din app og hvordan den er konfigureret. Som et resultat forventes alle bundtede eksekverbare programmer (plug-ins, frameworks og apps) at have en informationsegenskabsliste-fil. Ifølge konventionen er navnet på en informationsegenskabsliste-fil Info.plist. Dette filnavn er følsomt over for store og små bogstaver og skal have et indledende stort bogstav 'I'. I iOS-apps befinder denne fil sig i rodmappen af bundtet, mens den i macOS-bundter befinder sig i bundtets 'Contents'-mappe. Xcode opretter typisk denne fil automatisk for dig, når du opretter et projekt af en passende type.

Oprettelse og Redigering af en Info.plist-fil

Den enkleste måde at oprette en Info.plist-fil på er at lade Xcode gøre det for dig. Hvert nyt bundtbaseret projekt, du opretter i Xcode, leveres med en fil kaldet <projekt>-Info.plist, hvor <projekt> er navnet på projektet. Under build-processen bruges denne fil til at generere den endelige Info.plist-fil, der derefter inkluderes i det resulterende bundt.

For at redigere indholdet af din informationsegenskabsliste-fil skal du vælge <projekt>-Info.plist-filen i dit Xcode-projekt for at vise egenskabslisteeditoren. Editoren i Xcode er brugervenlig og præsenterer informationen i et læsbart format. Filen, der oprettes af Xcode, leveres forkonfigureret med de nøgler, som enhver Info.plist bør have. For at redigere værdien for en specifik nøgle skal du dobbeltklikke på værdien i Xcode-egenskabslisteeditoren for at vælge den og derefter indtaste en ny værdi. De fleste værdier er angivet som strenge, men Xcode understøtter også flere andre skalære typer. Du kan også angive komplekse typer såsom en matrix eller en ordbog. Egenskabslisteeditoren viser en passende grænseflade til redigering af hver type. For at ændre typen af en given værdi skal du sikre dig, at værdien ikke er valgt, og Control-klikke på den for at få vist dens kontekstmenu. Fra undermenuen 'Value Type' skal du vælge den type, du vil bruge til værdien. Selvom informationsegenskabslister normalt kun er tekstfiler, kan du også redigere dem ved hjælp af enhver teksteditor, der understøtter UTF-8-filkodning. Fordi de er XML-filer, frarådes manuel redigering af egenskabsliste-filer dog generelt for at undgå fejl.

Tilføjelse af Nøgler til en Info.plist-fil

Selvom Info.plist-filen, der leveres af Xcode, indeholder de mest kritiske nøgler, der kræves af systemet, bør de fleste apps typisk angive flere yderligere nøgler. Mange undersystemer og systemapps bruger Info.plist-filen til at indsamle information om din app. For eksempel, når brugeren vælger 'Filer > Hent info' for din app, viser Finder information fra mange af disse nøgler i det resulterende informationsvindue.

Du tilføjer nøgler til din apps Info.plist ved hjælp af Xcode-egenskabslisteeditoren. Det er vigtigt at bemærke, at egenskabslisteeditoren i Xcode som standard viser menneskeligt læsbare strenge (i stedet for det faktiske nøglenavn) for mange nøgler. For at vise de faktiske nøglenavne, som de vises i Info.plist-filen, skal du Control-klikke på en af nøglerne i editorvinduet og aktivere 'Show Raw Keys/Values'-elementet i kontekstmenuen. Dette kan være yderst nyttigt, når du arbejder med dokumentation eller søger efter specifikke nøgler.

Lokalisering af Info.plist-værdier

Værdierne for mange nøgler i en informationsegenskabsliste-fil er menneskeligt læsbare strenge, der vises for brugeren af Finder eller din egen app. Når du lokaliserer din app, skal du sørge for at lokalisere værdierne for disse strenge ud over resten af din apps indhold. Lokaliserede værdier gemmes ikke i selve Info.plist-filen. I stedet gemmer du værdierne for en bestemt lokalisering i en strengfil med navnet InfoPlist.strings.

Du placerer denne fil i den samme sprogspecifikke projektmappe, som du bruger til at gemme andre ressourcer til den samme lokalisering. Indholdet af InfoPlist.strings-filen er de individuelle nøgler, du vil lokalisere, og den passende oversatte værdi. Rutinerne, der slår nøgleværdier op i Info.plist-filen, tager brugerens sprogpræferencer i betragtning og returnerer den lokaliserede version af nøglen (fra den relevante InfoPlist.strings-fil), når en sådan findes. Hvis en lokaliseret version af en nøgle ikke findes, returnerer rutinerne værdien gemt i Info.plist-filen. Dette sikrer, at din app altid har en fallback-værdi, selvom en specifik oversættelse mangler.

What is info plist in Xcode?
Many subsystems and system apps use the Info.plist file to gather information about your app. For example, when the user chooses File > Get Info for your app, the Finder displays information from many of these keys in the resulting information window. You add keys to your app’s Info.plist using the Xcode property list editor.

Oprettelse af Platform- og Enhedsspecifikke Nøgler

Du kan udpege en nøgle i en Info.plist-fil som gældende for en specifik platform, en specifik enhedstype eller begge dele. Dette er utrolig kraftfuldt, da det giver dig mulighed for at finjustere din apps adfærd baseret på, hvor den kører. For at oprette en platform- eller enhedsspecifik nøglevariant skal du kombinere et rodnøglenavn med en eller to kvalifikatorer ved hjælp af følgende mønster:

key_root-<platform>~<device>

I dette mønster repræsenterer key_root den originale navn på nøglen. <platform> og <device> er valgfrie og begrænser nøglens anvendelighed til en specifik platform eller enhedstype. Bemærk, at hvis du anvender en platformskvalifikator, skal du forbinde den med en bindestreg (-), og hvis du anvender en enhedskvalifikator, skal du forbinde den med en tilde (~). Brug af en enhedskvalifikator er langt mere almindelig end brug af en platformskvalifikator. For en enhedskvalifikator kan du bruge en af følgende værdier:

  • iphone: Nøglen gælder kun for iPhone-enheder.
  • ipod: Nøglen gælder kun for iPod touch-enheder.
  • ipad: Nøglen gælder kun for iPad-enheder.

For en platformskvalifikator kan du angive en værdi af iphoneos eller macos afhængigt af, hvilken af disse to platforme du målretter mod. Når du angiver en nøglevariant, skal du gøre det ud over at anvende en tilsvarende nøgle uden kvalifikatorer, og derved sikre, at du giver en rimelig standardværdi. Når systemet søger efter en nøgle i din apps Info.plist-fil, vælger det den nøgle, der er mest specifik for den aktuelle enhed og platform. Hvis det ikke finder en kvalificeret nøgle, søger det efter en uden kvalifikatorer. Dette hierarki sikrer, at din app altid har en passende konfiguration.

Brugerdefinerede Nøgler (Custom Keys)

iOS og macOS ignorerer brugerdefinerede nøgler, du inkluderer i en Info.plist-fil. Hvis du vil inkludere app-specifik konfigurationsinformation i din Info.plist-fil, kan du gøre det frit, så længe dine nøglenavne ikke kommer i konflikt med dem, Apple bruger. Når du definerer brugerdefinerede nøglenavne, skal du forsyne dem med et unikt præfiks, f.eks. din apps bundle-ID eller din virksomheds domænenavn, for at forhindre konflikter. Dette er en god praksis, der sikrer, at dine tilpassede nøgler forbliver adskilt fra systemnøgler og tredjepartsbiblioteker.

Anbefalede Info.plist-nøgler

Hver af Xcode-applikationsskabelonerne inkluderer en Info.plist-fil, men du kan også konstruere en fra bunden. Når du opretter en informationsegenskabsliste-fil, er der flere nøgler, du altid bør inkludere. Disse nøgler tilgås næsten altid af systemet, og at give dem sikrer, at systemet har den information, det har brug for til at arbejde effektivt med din app.

Anbefalede Nøgler for iOS-apps:

  • CFBundleDevelopmentRegion
  • CFBundleDisplayName
  • CFBundleExecutable
  • CFBundleIconFiles
  • CFBundleIdentifier
  • CFBundleInfoDictionaryVersion
  • CFBundlePackageType
  • CFBundleVersion
  • LSRequiresIPhoneOS
  • UIMainStoryboardFile

Ud over disse nøgler er der flere, der ofte inkluderes:

  • UIRequiredDeviceCapabilities (påkrævet)
  • UIStatusBarStyle
  • UIInterfaceOrientation
  • UIRequiresPersistentWiFi

Anbefalede Nøgler for Cocoa-apps (macOS):

  • CFBundleDevelopmentRegion
  • CFBundleDisplayName
  • CFBundleExecutable
  • CFBundleIconFile
  • CFBundleIdentifier
  • CFBundleInfoDictionaryVersion
  • CFBundleName
  • CFBundlePackageType
  • CFBundleShortVersionString
  • CFBundleVersion
  • NSHumanReadableCopyright

Disse nøgler identificerer din app over for systemet og giver nogle grundlæggende oplysninger om de tjenester, den leverer. Cocoa-apps bør også inkludere følgende nøgler for at identificere centrale ressourcer i bundtet:

  • NSMainNibFile
  • NSPrincipalClass

Bemærk: Hvis du bygger en Cocoa-app ved hjælp af en Xcode-skabelon, er NSMainNibFile og NSPrincipalClass nøglerne typisk allerede indstillet i skabelonprojektet.

Almindeligt Lokaliserede Nøgler:

Ud over de anbefalede nøgler er der flere nøgler, der bør lokaliseres og placeres i dine sprogspecifikke InfoPlist.strings-filer:

  • CFBundleDisplayName
  • CFBundleName
  • CFBundleShortVersionString
  • NSHumanReadableCopyright

Info.plist Baseret på Build-konfiguration

En af de mest kraftfulde funktioner ved Info.plist i Xcode er dens evne til at integrere med build-indstillinger. Dette giver dig mulighed for at have forskellige Info.plist-værdier baseret på din build-konfiguration (f.eks. Debug, Release eller tilpassede konfigurationer som Staging). Dette er afgørende for at administrere forskellige appnavne, API-nøgler, eller andre konfigurationer, der ændrer sig mellem udviklings- og produktionsmiljøer.

Info.plist kan referere til værdier defineret i Xcode's Build Settings ved hjælp af syntaksen $(BUILD_SETTINGS_KEY). Dette betyder, at i stedet for at hardcode en værdi direkte i Info.plist, kan du lade den hente sin værdi dynamisk fra dine projektindstillinger.

Indstilling af en Foruddefineret Værdi

Lad os tage et eksempel med appens navn, som typisk er knyttet til nøglen CFBundleDisplayName eller CFBundleName i Info.plist. Hvis du åbner Info.plist eller 'Info'-fanen i Xcode, under 'Bundle name', som er nøglen for appnavnet, vil du sandsynligvis se værdien indstillet til $(PRODUCT_NAME). Dette er et eksempel på, hvordan en Info.plist-værdi refererer til en build-indstilling.

For at ændre appnavnet baseret på build-konfigurationen skal du modificere PRODUCT_NAME-værdien i build-indstillingerne:

  1. Vælg fanen 'Build Settings' i dit Xcode-projekt.
  2. Søg efter 'product name'.
  3. Klik på pilen til venstre for 'Product Name'. Du vil se to indlejrede rækker med navne, der svarer til Xcode's standard build-konfigurationer: 'Debug' og 'Release'.
  4. Dobbeltklik på værdien for den ønskede konfiguration for at ændre den. For eksempel kan du ændre appnavnet for 'Debug'-konfigurationen til "MinApp (Debug)".

Dette er alt, du skal gøre for at ændre appnavnet baseret på build-konfigurationen. Når du bygger din app i 'Debug'-tilstand, vil den have det specificerede debug-navn, og når du bygger den i 'Release'-tilstand, vil den have release-navnet.

Indstilling af en Brugerdefineret Værdi

Hvad nu hvis du har brug for at definere en ny Info.plist-nøgle og en ny Build-konfigurationsværdi, for eksempel til en API-nøgle, der skal være forskellig i udviklings- og produktionsmiljøer? Dette er også muligt.

What is info plist based on build configuration?
Info.plist is a file that contains information about an app, e.g., app name, app version, or even API Key for third-party service. If you use build configuration to separate setting between development, stating, and production, you might want to configure Info.plist value based differently based on build configuration.

Først skal du oprette en ny Info.plist-nøgle:

  1. Åbn 'Info'-fanen i dit Xcode-projekt.
  2. Hold musen over den sidste række og klik på plusknappen (+). En ny række vises.
  3. Navngiv den, hvad du vil. Lad os kalde den MIT_API_NØGLE.
  4. Indstil værdien ved at dobbeltklikke på værdikolonnen. Da vi vil bruge forskellige værdier baseret på build-indstillingen, vil vi indsætte en reference til en nøgle i build-indstillingen. Vi kan give den samme navn, f.eks. $(MIT_API_NØGLE).

På dette tidspunkt har vi en ny Info.plist-nøgle, hvis værdi peger på MIT_API_NØGLE-nøglen i build-indstillingen. Det sidste, vi skal gøre, er at oprette denne nøgle i build-indstillingen.

For at oprette en ny nøgle i build-indstillingen:

  1. Åbn fanen 'Build Settings'.
  2. Klik på plusknappen (+) øverst til venstre, og vælg derefter 'Add User-Defined Setting'.
  3. Indtast navnet på den nye nøgle. I dette tilfælde navngiver vi den MIT_API_NØGLE.
  4. Udvid den nye indstilling, og indstil værdien baseret på build-konfigurationen. Du kan f.eks. indstille 'Debug' til "DEBUG_API_KEY_123" og 'Release' til "PROD_API_KEY_ABC".

Med denne indstilling kan du have forskellige MIT_API_NØGLE-værdier baseret på debug- og release-konfigurationen. Du kan teste det ved at læse værdien fra Info.plist-filen i din applikationskode. Denne metode sikrer, at følsomme oplysninger eller miljøspecifikke værdier aldrig hardcodes, hvilket forbedrer sikkerhed og fleksibilitet i din udviklingsproces.

Sammenligning af Build-konfigurationer i Info.plist

For at opsummere, her er en tabel, der viser, hvordan forskellige Info.plist-værdier kan variere baseret på build-konfigurationer:

Info.plist NøgleBuild IndstillingDebug VærdiRelease Værdi
CFBundleDisplayNamePRODUCT_NAMEMin App (Debug)Min App
MIT_API_NØGLEMIT_API_NØGLE (Brugerdefineret)DEBUG_API_KEY_123PROD_API_KEY_ABC
CFBundleVersionCURRENT_PROJECT_VERSION1.0 (1)1.0 (10)

Ofte Stillede Spørgsmål om Info.plist

Hvorfor er Info.plist så vigtig for min app?

Info.plist er afgørende, fordi den indeholder alle de grundlæggende metadata og konfigurationsinformation, som operativsystemet (iOS, macOS) har brug for for at forstå og køre din app korrekt. Uden den ville systemet ikke vide appens navn, version, påkrævede funktioner, eller hvordan den skal starte.

Kan jeg redigere Info.plist manuelt med en teksteditor?

Ja, Info.plist er en XML-fil, så du kan redigere den med enhver teksteditor, der understøtter UTF-8. Dog frarådes dette generelt. Xcode's indbyggede egenskabslisteeditor er designet til at forhindre syntaksfejl og gøre redigeringen nemmere og mere sikker.

Hvordan sikrer jeg, at mine tilpassede nøgler ikke kommer i konflikt med systemnøgler?

For at undgå konflikter med systemnøgler eller nøgler fra tredjepartsbiblioteker anbefales det kraftigt at præfikse dine brugerdefinerede nøgler med en unik streng, såsom din apps bundle-ID eller dit virksomheds domænenavn (f.eks. com.ditfirma.MinApp.MinBrugerdefineredeNøgle).

Hvad er InfoPlist.strings, og hvorfor skal jeg bruge det?

InfoPlist.strings er en fil, der bruges til at lokalisere menneskeligt læsbare strenge, der vises i din apps Info.plist, som f.eks. appens visningsnavn eller copyright-meddelelse. Ved at placere oversatte værdier i InfoPlist.strings-filer i sprogspecifikke mapper, kan din app automatisk vise den korrekte oversættelse baseret på brugerens sprogindstillinger.

Hvad er fordelen ved at bruge build-konfigurationer med Info.plist?

Brugen af build-konfigurationer med Info.plist giver en enorm fleksibilitet. Det gør det muligt for udviklere at have forskellige appnavne, API-nøgler, URL'er til bagvedliggende tjenester eller andre konfigurationsparametre for forskellige udviklingsstadier (f.eks. udvikling, test, produktion) uden at skulle ændre koden manuelt hver gang, hvilket reducerer risikoen for fejl og strømliner udviklingsworkflowet.

Konklusion

Info.plist er en grundlæggende komponent i enhver Xcode-projekt, der fungerer som din apps konfigurationscentral. Fra at definere dens grundlæggende identitet til at muliggøre kompleks lokalisering og tilpasning baseret på build-konfigurationer, er dens betydning ikke til at undervurdere. Ved at mestre de teknikker, vi har gennemgået – fra grundlæggende redigering i Xcode til at udnytte brugerdefinerede nøgler og build-indstillinger – kan du skabe mere robuste, fleksible og brugervenlige applikationer. En dyb forståelse af Info.plist vil give dig fuld kontrol over din apps adfærd og sikre, at den opfører sig præcis, som du ønsker det, uanset hvilket miljø den kører i. Husk altid at dobbelttjekke dine Info.plist-indstillinger, da selv en lille fejl kan have store konsekvenser for din apps funktionalitet og udgivelse.

Hvis du vil læse andre artikler, der ligner Info.plist i Xcode: Din Apps Konfigurationshjerte, kan du besøge kategorien Teknologi.

Go up