Middle
Jak zmienić ikonę aplikacji w zależności od środowiska?
sobes.tech AI
Odpowiedź od AI
W zależności od środowiska (np. Dev, Staging, Prod), można użyć:
- Tworzenia oddzielnych celów (Targets) dla każdego środowiska.
- Używania plików konfiguracyjnych (
.xcconfig). - Dodawania własnych kluczy w
Info.plist.
Proces:
- Utwórz duplikaty głównego celu aplikacji dla każdego środowiska.
- W ustawieniach każdego nowego celu zmień
Info.plist Filelub dodaj kluczCFBundleIconFilesi wskaż nazwę pliku ikony. - W plikach
.xcconfigdla każdego środowiska zdefiniuj zmienną wskazującą na odpowiedniInfo.plist. - W ustawieniach kompilacji głównego celu ustaw
Info.plist Filena${INFO_PLIST_FILE}(gdzieINFO_PLIST_FILEto zmienna z.xcconfig).
Przykład .xcconfig dla Dev:
// DEV.xcconfig
INFO_PLIST_FILE = Info_Dev.plist
Przykład 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> // Nazwa asset dla ikony Dev
</array>
</dict>
</dict>
...
</dict>
</plist>
Alternatywnie, bez duplikowania celów, można użyć skryptów podczas kompilacji, które modyfikują Info.plist w zależności od aktualnej konfiguracji. Jednak podejście z oddzielnymi celami jest bardziej przejrzyste i obsługiwane.
Do zarządzania assetami ikon można używać osobnych katalogów assetów dla każdego celu lub konfiguracji albo nadawać zestawom ikon unikalne nazwy (AppIconDev, AppIconStaging, AppIconProd) i wskazywać odpowiednią nazwę w Info.plist.