19. Jan 2021
iOSOptimalizácia (nielen) projektov na platforme Apple Silicon
Tento návod sa venuje nielen optimalizácii Xcode projektov a nastavení jeho jednotlivých parametrov, ale aj problémom, s ktorými sa bežne môžete stretnúť pri práci s najnovšími notebookmi s čipom Apple M1.
Náhle zobrazenie šetriča obrazovky
Ide o zaujímavú chybu, ktorá sa vyskytuje vo väčšej miere hlavne na zariadeniach s týmto procesorom. Problém je v tom, že pri bežnej práci sa po určitom čase náhle zobrazí šetrič obrazovky a nedá sa vypnúť.
Jedno z riešení je zavrieť a znova otvoriť notebook, čo tento šetrič obrazovky vypne. Avšak na Apple Developer Forums vzniklo vlákno, ktoré používateľom radí vypnúť zobrazenie menu rýchleho prepínania medzi používateľmi v nastaveniach systému.
Zobrazenie menu rýchleho prepínania medzi používateľmi nájdeme v nastaveniach:
System Preferences ➡️ Users & Groups ➡️ Login Options
Nefungujúce CocoaPods v termináli
CocoaPods podporujú Apple Silicon od verzie 1.10.0+, ale v prípade, že aj napriek tomu narazíte na problém máte 2 možnosti riešenia:
1. Doinštalovať podporný balíček Ruby-FFI. Stačí, ak zadáte do terminálnu príkaz:
sudo gem install ffi
2. Spustiť terminál pod Rosettou. Stačí nad terminálom zobraziť info, zakliknúť otvorenie pod Rosettou a reštartovať terminál.
Projekt sa nedá spustiť na simulátore
Simulátor po novom beží na macOS Big Sur na arm64, to znamená, že aj projekt sa kompiluje pomocou nového setu inštrukcií a väčšina veľkých knižníc, hlavne od Googlu, ešte nie je optimalizovaná.
Jedným z dočasných riešení, ako takýto projekt spustiť, je nepodporovať kompiláciu projektu na simulátore do architektúry typu arm64. Pre vypnutie je potrebné nastaviť excludovanie tejto architektúry v nastaveniach projektu pre simulátor.
V prípade, že projekt obsahuje aj externé knižnice, ktoré sú do projektu zahrnuté cez manažéra balíčkových závislostí CocoaPods, je potrebné nastaviť takéto excludovanie architektúry aj pre Pods.xcproject. To môžeme urobiť veľmi jednoducho, stačí do súboru Podfile umiestniť script, ktorý nastaví požadované excludovanie tejto architektúry pre každý pod.
post_install do |installer_representation|
installer_representation.pods_project.targets.each do |target|
target.build_configurations.eachdo|config|
config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
end
end
end
V simulátore sa nedá plynule scrollovať
V prípade, že po pustení kurzora pri scrolle nad UIScrollView okamžite zastane scroll, tak je problém v novej architektúre simulátora. O tomto probléme sa bavia iOS vývojári aj na Apple Developer Forums a spôsobuje to exludovanie architektúry arm64 v projekte. Pre odstránenie problému je potrebné rovnako, ako pri probléme s terminálom, spustiť simulátor pod Rosettou.
Aplikáciu simulátor nájdeme v zložke: Xcode ➡️ Show Package Contents ➡️ Contents ➡️ Developer ➡️ Applications ➡️ Simulator
Projekt sa nedá spustiť, pretože zobrazuje chybu ‘FIRAnalyticsConnector' for architecture arm64’
O probléme sa vie a je to spôsobené nekorektným linkovaním knižnice cez manažéra balíčkových závislostí CocoaPods. Tento problém by mal byť odstránený vo verzii 1.10.1, ktorá už je dostupná na stiahnutie.
V súčasnosti vývojári vo Firebase tíme pracujú na optimalizovaní knižníc pre architektúru arm64 . Aktuálne je možné vynútiť u niektorých knižníc Firebase, ako napríklad Firebase/Crashlytics optimalizovanú verziu pre architektúru arm64 a to špecifikovaním verzie takéhoto podu v Podfile vo formáte verzia-M1.
pod 'Firebase/Analytics', '7.4-M1'
pod 'Firebase/Core', '7.4-M1'
pod 'Firebase/Crashlytis', '7.4-M1'
pod 'Firebase/Performance', '7.4-M1'
Všeobecný stav tohto problému je možné sledovať na nasledovnej issue na Githube.
Hľadáš ďalšie užitočné tipy? Vybrali sme pre teba 6 skratiek, ktoré ocení každý iOS developer!