Middle
Jak změnit ikonu aplikace v závislosti na prostředí?
sobes.tech AI
Odpověď od AI
V závislosti na prostředí (například Dev, Staging, Prod) lze použít:
- Vytvoření samostatných cílů (Targets) pro každé prostředí.
- Použití konfiguračních souborů (
.xcconfig). - Přidání vlastních klíčů do
Info.plist.
Proces:
- Duplikujte hlavní cíl aplikace pro každé prostředí.
- V nastavení každého nového cíle změňte
Info.plist Filenebo přidejte klíčCFBundleIconFilesa uveďte název souboru ikony. - V
.xcconfigsouborech pro každé prostředí definujte proměnnou odkazující na odpovídajícíInfo.plist. - V nastavení sestavení hlavního cíle nastavte
Info.plist Filena${INFO_PLIST_FILE}(kdeINFO_PLIST_FILEje proměnná z.xcconfig).
Příklad .xcconfig pro Dev:
// DEV.xcconfig
INFO_PLIST_FILE = Info_Dev.plist
Příklad 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> // Název assetu pro ikonu Dev
</array>
</dict>
</dict>
...
</dict>
</plist>
Alternativně bez duplikace cílů je možné použít skripty během sestavení, které upravují Info.plist podle aktuální konfigurace. Nicméně, přístup s oddělenými cíli je přehlednější a podporovaný.
Pro správu assetů ikon lze použít samostatné Asset Catalogs pro každý cíl nebo konfiguraci, nebo pojmenovat sady ikon unikátně (AppIconDev, AppIconStaging, AppIconProd) a uvést odpovídající název v Info.plist.