Illustration for the article: Tauri 2 v praxi: jedna appka na šesť zariadení

Tauri 2 v praxi: jedna appka na šesť zariadení

Ako z jedného projektu postaviť aplikáciu pre Android, iPhone, Mac, Windows, Linux aj web s Tauri 2 — čo zdieľať, čo nie a kde sú pasce.

Tomáš Renčík4 min read

Stručne: Tauri 2 spája webové rozhranie (napríklad Vue) s natívnym jadrom v Ruste a z jedného projektu vyrobí aplikáciu pre desktop aj mobil. Zdieľate rozhranie a väčšinu logiky; platformové veci ako podpisovanie, obchody či systémové povolenia riešite pre každú platformu zvlášť.

Ešte pred pár rokmi som robil „len“ weby. Dnes mám vlastné aplikácie, ktoré bežia na počítači aj v mobile — a robím ich sám. Veľkú časť tejto zmeny mi umožnil Tauri 2.

V tomto článku vám poviem, ako Tauri funguje, čo mi v praxi ušetrilo najviac času a kde som si nabil nos.

Čo je Tauri

Tauri je framework na aplikácie, v ktorých:

  • rozhranie píšete ako web (HTML, CSS, JavaScript — Vue, React, Svelte, čokoľvek),
  • „mozog“ aplikácie beží v jazyku Rust,
  • výsledkom je natívna aplikácia pre daný systém.

Tauri 2 pridal k desktopu (Windows, macOS, Linux) aj mobil (Android a iOS). Na iOS sa pritom iPhone aj iPad obslúžia jednou aplikáciou. Preto „šesť zariadení“.

Na rozdiel od Electronu si Tauri nenesie celý prehliadač. Používa zobrazovač webu, ktorý už systém má (WebView2 na Windows, WebKit na Macu a iOS, WebView na Androide). Aplikácie sú preto menšie a štartujú rýchlejšie.

Čo sa naozaj dá zdieľať

Rozhranie – takmer celé. Jedna sada komponentov, jeden dizajn. Rozdiely rieši CSS (media queries, bezpečné okraje na iPhone) a pár podmienok v kóde.

Logika v Ruste – veľká časť. Práca so súbormi, sieť, šifrovanie, databáza — to napíšete raz. Rust sa preloží pre každý systém zvlášť.

Komunikácia medzi nimi. Rozhranie volá funkcie v Ruste cez takzvané príkazy:

#[tauri::command]
fn pozdrav(meno: &str) -> String {
    format!("Ahoj, {meno}!")
}
import { invoke } from '@tauri-apps/api/core'
const text = await invoke('pozdrav', { meno: 'Janko' })

Toto je celé kúzlo. Rozhranie nevie nič o systéme, Rust nevie nič o tlačidlách.

Čo sa zdieľať nedá (a netreba to siliť)

  • Systémové veci – notifikácie, prístup k fotkám, spúšťanie po štarte, ikona v lište. Tauri má na to pluginy, no každý systém sa správa inak. Počítajte s tým, že niečo pôjde len na desktope a niečo len v mobile.
  • Podpisovanie a distribúcia – každý obchod má svoje pravidlá. Apple chce certifikáty a profily, Google podpisový kľúč, Windows ideálne podpísaný inštalátor. Toto je práca, ktorú vám žiadny framework neodpracuje.
  • Rozdiely zobrazovačov webu – WebKit na iOS sa niekedy správa inak ako Chromium na Androide. Testujte na skutočných zariadeniach, nie len v prehliadači.

Pasce, na ktoré som narazil

1. „Na mojom počítači to ide.“ Preklad pre iOS a Android má viac krokov a každý môže zlyhať inde: Xcode, Android SDK, cesty k nástrojom. Oplatí sa mať jeden skript, ktorý spraví celý build, a zapísať si, čo presne ste nastavovali. O pol roka si to nebudete pamätať.

2. Súbory a cesty. Na každom systéme je dokumentový priečinok inde. Nikdy nepíšte cesty natvrdo — použite API, ktoré vám ich povie.

3. Obrazovky a bezpečné okraje. iPhone má výrez a spodnú lištu. Bez env(safe-area-inset-bottom) vám tlačidlá skončia pod prstom systému.

4. Aktualizácie. Desktop si viete aktualizovať sami (Tauri má updater). Mobil ide cez obchody — iný rytmus, iná kontrola.

5. Nepíšte natívny kód, kým nemusíte. Väčšinu vecí vyriešite webom a Rustom. Swift alebo Kotlin som potreboval až pri veciach, ktoré sa inak urobiť nedali — a vtedy je dobré vedieť, že Tauri to umožní.

Ako začať

  1. Najprv desktop. Rozbehnite aplikáciu na svojom systéme, kým nebude robiť to, čo chcete.
  2. Potom Android — nástroje sú dostupné na každom systéme.
  3. Nakoniec iOS — potrebujete Mac a Apple vývojársky účet.
  4. Od prvého dňa majte rozhranie responzívne. Dorábať mobil do desktopového dizajnu bolí.

Oficiálna dokumentácia je na v2.tauri.app a je naozaj dobrá — začnite tam, nie v náhodnom návode z roku 2022.

Úloha na precvičenie

Skúste si za jeden víkend postaviť malú aplikáciu „Poznámky“:

  1. Rozhranie: zoznam poznámok a pole na pridanie novej.
  2. Rust: jeden príkaz, ktorý poznámky uloží do súboru v priečinku aplikácie, a druhý, ktorý ich načíta.
  3. Spustite ju na svojom počítači, potom v emulátore Androidu.
  4. Zistite, kde presne na disku sa súbor uložil na každom systéme — a prečo inde.

Na tejto malej úlohe narazíte na všetko podstatné: komunikáciu medzi webom a Rustom, cesty k súborom, oprávnenia a rozdiely medzi systémami.

Časté otázky

Musím vedieť Rust skôr, než začnem? Nie. Na začiatok vám stačia jednoduché funkcie, ktoré prijmú a vrátia hodnotu. Rust sa naučíte postupne, keď budete potrebovať viac.

Je to lepšie ako Flutter alebo React Native? Je to iné. Ak ste doma vo webe a chcete zdieľať aj desktop, Tauri je prirodzená voľba. Ak robíte len mobil a chcete úplne natívny vzhľad, iné nástroje môžu dávať väčší zmysel.

Koľko stojí vydanie v obchodoch? Apple aj Google majú vlastné poplatky za vývojársky účet. Aktuálne sumy si overte priamo u nich — menia sa.

Stojí to za to?

Ak ste webový vývojár a chcete robiť aplikácie, Tauri je podľa mňa najkratšia cesta. Neučíte sa odznova rozhranie, učíte sa len systém okolo. Rust je na začiatku náročný, ale kompilátor vás vychová — a to, čo prejde, zvyčajne aj funguje.

Z webára na vývojára pre šesť zariadení som sa nestal za týždeň. Ale bez Tauri by to trvalo roky.

Súvisiace články

  • #Tauri
  • #Rust
  • #cross-platform
  • #mobil
  • #desktop

More from the blog