Middle
Comment changer l'icône de l'application en fonction de l'environnement?
sobes.tech IA
Réponse de l'IA
Selon l’environnement (par exemple, Dev, Staging, Prod), vous pouvez utiliser :
- Créer des cibles (Targets) séparées pour chaque environnement.
- Utiliser des fichiers de configuration (
.xcconfig). - Ajouter des clés personnalisées dans
Info.plist.
Processus :
- Dupliquer la cible principale de l’application pour chaque environnement.
- Modifier dans la configuration de chaque nouvelle cible le
Info.plist Fileou ajouter la cléCFBundleIconFileset indiquer le nom du fichier d’icône. - Dans les fichiers
.xcconfigpour chaque environnement, définir une variable pointant vers leInfo.plistcorrespondant. - Dans les paramètres de build de la cible principale, définir
Info.plist Filesur${INFO_PLIST_FILE}(oùINFO_PLIST_FILEest une variable dans.xcconfig).
Exemple de .xcconfig pour Dev :
// DEV.xcconfig
INFO_PLIST_FILE = Info_Dev.plist
Exemple de 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> // Nom de l’asset pour l’icône Dev
</array>
</dict>
</dict>
...
</dict>
</plist>
Une autre approche sans dupliquer les cibles consiste à utiliser des scripts lors de la compilation pour modifier Info.plist en fonction de la configuration. Cependant, la méthode avec des cibles séparées est plus claire et maintenable.
Pour la gestion des assets d’icônes, il est possible d’utiliser des Catalogues d’Assets séparés pour chaque cible ou configuration, ou de nommer les ensembles d’icônes de façon unique (AppIconDev, AppIconStaging, AppIconProd) et de spécifier le nom correspondant dans Info.plist.