Middle
Hoe verander je het app-icoon afhankelijk van de omgeving?
sobes.tech AI
Antwoord van AI
Afhankelijk van de omgeving (bijvoorbeeld Dev, Staging, Prod) kan het volgende worden gebruikt:
- Het maken van aparte doelen (Targets) voor elke omgeving.
- Gebruik maken van configuratiebestanden (
.xcconfig). - Toevoegen van aangepaste sleutels in
Info.plist.
Proces:
- Maak duplicaten van het hoofddoel van de app voor elke omgeving.
- In de instellingen van elk nieuw doel, wijzig
Info.plist Fileof voeg de sleutelCFBundleIconFilestoe en geef de naam van het icoonbestand op. - In de
.xcconfig-bestanden voor elke omgeving, definieer een variabele die verwijst naar de juisteInfo.plist. - Stel in de build-instellingen van het hoofddoel
Info.plist Filein op${INFO_PLIST_FILE}(waarINFO_PLIST_FILEeen variabele uit.xcconfigis).
Voorbeeld van .xcconfig voor Dev:
// DEV.xcconfig
INFO_PLIST_FILE = Info_Dev.plist
Voorbeeld van Info_Dev.plist:
<!-- Info_Dev.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIconDev</string> // Asset-naam voor Dev-icoon
</array>
</dict>
</dict>
...
</dict>
</plist>
Een alternatieve aanpak zonder doelen te dupliceren, is het gebruik van scripts tijdens de build die Info.plist aanpassen op basis van de huidige configuratie. Maar de aanpak met aparte doelen is duidelijker en wordt beter ondersteund.
Voor het beheer van icoon-assets kunnen aparte Asset Catalogs voor elke doel of configuratie worden gebruikt, of sets van iconen worden eenmalig een naam gegeven (AppIconDev, AppIconStaging, AppIconProd) en de juiste naam wordt in Info.plist aangegeven.