8 kroků, jak spustit aplikaci Splash Blubs na Mac Catalyst

Začátkem června 2019 se inženýři iOS a macOS otřásali, protože Apple se chystal vydat změny na své každoroční konferenci WWDC. Ať už to bude být cokoli, obvykle mění léto hodně plánů inženýrů. Naším cílem je přinést skvělé a kvalitní zážitky na platformy iOS / Mac, což obvykle znamená usilovně pracovat na tom, aby společnost Apple zveřejnila datum vydání nejnovějšího OS. Rok 2019 se nijak nelišil, třebaže možná i trochu zvláštnější.

Jako obvykle, Apple vydal spoustu nových funkcí, ale tam byl jeden, na který jsem se osobně těšil na testování. Je známo, že již více než rok pracují na portu UIKit pro MacOS. Existuje několik aplikací v macOS Mojave postavených na této technologii, které Apple sami postavili.

Co to přesně znamená pro vývojáře aplikací

To znamená, že bychom mohli spustit kód pro naše aplikace pro iPhone a iPad s velmi malými změnami nativně na MacOS. To také znamená, že bychom nemuseli přepisovat náš kód uživatelského rozhraní z UIKitu na AppKit, který se používá v makrech po celá desetiletí. V podstatě bychom mohli celou platformu macOS přidat do našeho portfolia s několikahodinovým vývojem.

Vzhledem k tomu, že tato technologie byla již v OS v loňském roce, lidé byli již nadšení a začali experimentovat s tzv. „Projektem Marzipan“. V roce 2019 se stala oficiální a nyní se nazývá „Project Catalyst“, která je součástí oficiálního vydání systému MacOS Catalina. Jak to však funguje v praxi? Jak dlouho trvá vytvoření skutečné produkční aplikace pro iOS na MacOSu s Catalystem?

Blubs řeči na Mac

Opravdu jsem chtěl vědět odpověď na tyto otázky. Speech Blubs je naše hlavní aplikace a na iOS dosahujeme skvělých výsledků. Je to složitá aplikace v několika jazycích, s více než 100 000 řádky kódu, více knihovnami třetích stran atd. Pro mě to znělo jako skvělá a realistická volba pro tento experiment. Takže jsem musel začít pracovat na verzi pro Mac. . .

Nejprve jsem otevřel projekt, vytvořil novou větev a kliknul na platformu macOS! Dalším krokem bylo zkompilovat! Vytvoření aplikace by vydalo více než 100 chyb. Ach drahá. Ale dovolte mi pokračovat. Nejprve jsme museli zajistit, aby všechny knihovny třetích stran vytvářely a propojovaly. Protože projekt používá CocoaPods, bylo by to trochu komplikovanější, protože podpora Catalyst může být stále trochu buggy. Začal jsem tedy odstraňovat naše analytické knihovny, včetně Facebooku, Crashlytics a jejich závislostí, protože je pro tento experiment opravdu nepotřebujeme.

Došli jsme k poslednímu problému s propojením: Realm. Speech Blubs používá Realm jako databázi, protože je to jedna z nejlepších mobilních databází venku. Propojovali jsme to pomocí CocoaPods a prostě se to nepostavilo. Jediným způsobem, jak to zahrnout, byl Swift Package Manager, který jsme dosud nepoužívali.

Správce balíků Swift

Používáme několik soukromých rámců a stavíme projekt s CocoaPods. Převod na SPM by nebyl jistě malý úkol. Ve skutečnosti jsme však nemuseli CocoaPods úplně upustit, protože pracují ruku v ruce s integrací XM SPM. Začal jsem tedy převáděním našich interních rámců na propojení s SPM. To také zahrnovalo převod všech jejich závislostí. Trvalo mi zhruba hodinu, než jsem se naučil psát jednoduchý balíček, rychlý soubor a převádět všechny naše závislosti.

I k mému překvapení jsem prošel mnohem rychleji, než jsem původně očekával. Je stále trochu otravné přidávat Swift Packages ručně do Xcode, protože je potřebujete znovu načíst pokaždé, když provedete malou změnu v úložišti GIt na GitHubu.

Kompilace a běh řeči na Mac

Takže nyní jsou všechny závislosti úspěšně zkompilovány a propojeny, ale aplikace stále ne. Už jsem odstranil některé knihovny třetích stran, včetně naší podpory chatu. Abych pokračoval, začal jsem komentovat kód, který do těchto knihoven zavolal, a asi po hodině práce se projekt úspěšně budoval. Abych to konečně spustil, vše, co jsem musel udělat, bylo stisknout tlačítko „Přehrát“ v Xcode na „My Mac“ jako cílové zařízení a Speech Blubs poprvé běží na ploše! Je to úžasný pocit vidět tuto známou ikonu iOS ve vašem doku.

První spuštění aplikace Speech Blubs

Závady a chyby

První běh ukázal, že se vyskytly nějaké chyby a závady. MacOS je zcela jiná platforma. Pochopitelně, ve Speech Blubs bylo pár věcí, které bychom museli opravit. S tlačítky jsme měli nějaké problémy, protože se zdálo příliš velké. Pravděpodobně jen omezení automatického rozložení, která je třeba opravit. Posouvání fungovalo, ale občas vypadalo trochu nereagující. Naše funkce fotoaparátu a mikrofonu nefungovaly správně, protože existovaly obrovské architektonické rozdíly. Naše analytika a podpora třetích stran také chyběly, aby se jednalo o plně vybavený produkt.

Následky

Kromě několika závad a chyb, Catalyst ve skutečnosti dělá těžké zvedání za vás. Rozpoznávače gest fungovaly dobře, všechny výchozí prvky UIKit fungují také velmi dobře. Většina kódu našeho modelu již vyběhla z krabice, protože to bylo nezávislé na uživatelském rozhraní. V takových případech solidní architektura opravdu pomáhá s rychlým přesunem věcí na novou platformu. Má to smysl pro samotný produkt? Upřímně nevím. Většina mechanik, které v této aplikaci používáme, není v Macu dobrá, ale to neznamená, že jsme tento nápad nevyvíjeli. Každá aplikace je jiná a má své vlastní jedinečné funkce. A každá platforma je jiná, to samé platí pro watchOS, tvOS atd. Celkově Catalyst je skvělá sada nástrojů, a pokud vaše aplikace dává smysl i pro Mac, může skutečně zjednodušit a urychlit vývojový proces, pokud podporujete platformy iOS i macOS. A ještě více, když budete moci používat SwiftUI, což je nejméně jeden rok. Ať tak či onak, byl to dobrý experiment, jen abych viděl, jak by to všechno šlo. Mohou se vyskytnout chyby, které jsou způsobeny zástupnými řešeními, která jste implementovali v systému iOS, ale na počítačích Mac již nefungují. Takže na odpověď na moji otázku, jak dlouho to trvá? Záleží. Na samotném produktu, na podpoře iPadu, kvalitě kódu a na tom, jak nativní chcete, aby se aplikace na počítačích Mac cítila.

Spojte se s týmem vývojářů řeči Blubs!

Pokud chcete chatovat o vývoji aplikací, neváhejte nás kontaktovat. To je to, co děláme a co milujeme, takže o tom opravdu rádi mluvíme! :)