KaiOS: co to je, architektura systému a webové aplikace

Autor: IT Sectr Publikováno: 2026-02-07 Doba čtení: 13 min

KaiOS — operační systém pro tlačítkové telefony založený na webových technologiích Boot to Gecko (B2G) od Mozilly. Vývoj aplikací probíhá v HTML5, CSS a JavaScriptu bez nutnosti učit se nativní jazyky. KaiOS funguje na zařízeních s 256–512 MB RAM a podporuje 4G VoLTE, GPS, Bluetooth. Podle údajů KaiOS Technologies bylo v roce 2025 po celém světě více než 200 milionů aktivních zařízení.

Hlavní body

  • KaiOS — webově orientovaný OS pro tlačítkové telefony na enginu Gecko od Mozilly
  • HTML5/CSS/JS — vývojový stack, který nevyžaduje učení nativních programovacích jazyků
  • KaiStore — oficiální obchod s aplikacemi s moderací a podepisováním balíčků
  • Web API — MozMobileConnection, MozTelephony, MozSms pro přístup k hardwarovým funkcím telefonu
  • Gecko — verze 48 (KaiOS 2.5) nebo 84 (KaiOS 3.0) určuje dostupnost API

Co je KaiOS?

KaiOS — mobilní operační systém pro tlačítkové telefony, vyvinutý společností KaiOS Technologies. Systém je založen na open-source projektu Boot to Gecko (B2G) od Mozilly, který byl původně vytvořen jako webová alternativa k Androidu pro ultra-levná zařízení. První komerční vydání proběhlo v roce 2017 na telefonu Reliance JioPhone v Indii.

Podle Counterpoint Research (Q2 2025) zaujímá KaiOS 2,8 % celosvětového trhu mobilních OS, za Androidem (72 %) a iOS (27 %), ale před ostatními platformami. V Indii dosahuje podíl KaiOS 14 % díky programu JioPhone. Průměrná cena zařízení s KaiOS je 20-30 amerických dolarů, což systém činí klíčovým pro rozvíjející se trhy.

Klíčová vlastnost KaiOS — všechny aplikace jsou webové aplikace. Vývojář píše kód v HTML5, CSS a JavaScriptu, zabalí jej do archivu ZIP s manifestem a publikuje v KaiStore. Systém nepodporuje instalaci nativních APK souborů — pouze Open Web Apps podle specifikace W3C Widget.

Historie verzí KaiOS

KaiOS 2.5 (2018) — první stabilní verze na jádře Gecko 48, nainstalovaná na JioPhone 1. KaiOS 2.5.3 (2021) — podpora Google Assistant, Google Maps Go, YouTube Go. KaiOS 3.0 (2022) — Gecko 84, vylepšený výkon, WebGL 2.0, CSS Grid. KaiOS 3.1 (2024) — optimalizace pro 256 MB RAM, nové Web API Audio Channel, vylepšené zabezpečení TLS 1.3.

Verze KaiOSRokGeckoKlíčová změna
2.5201848První stabilní vydání, JioPhone 1
2.5.3202148Google Apps, Asistent, vylepšené zabezpečení
3.0202284ES2020, WebGL 2.0, CSS Grid, vylepšený výkon JS
3.1202484256 MB RAM, TLS 1.3, Audio Channel API

Architektura KaiOS: jádro Linux a engine Gecko

Architektura KaiOS se skládá ze tří klíčových vrstev: jádra Linux (Gonk), webového enginu Gecko a uživatelského rozhraní Gaia. Gonk — hardwarově závislá vrstva zahrnující ovladače, HAL (Hardware Abstraction Layer), zásobník modemu RIL (Radio Interface Layer) a podporu senzorů. Z Android Open Source Project (AOSP) jsou převzaty bootloader, ovladače a některé knihovny.

Gonk — hardwarová vrstva

Gonk poskytuje Gecku přístup k hardwaru: kameře, Bluetooth, Wi-Fi, GPS, audiu, vibracím, senzorům. Na rozdíl od Androidu, kde se aplikace píší pro Dalvik/ART, v KaiOS aplikace přistupují k hardwaru přes Web API překládaná Geckem do Gonk IPC. Rozhraní RIL zajišťuje 4G VoLTE, SMS, USSD a správu SIM karet.

Gecko — webový engine

Gecko v KaiOS není jen prohlížečový engine, ale plnohodnotné běhové prostředí aplikací. Všechny HTML5 aplikace pracují uvnitř Gecko Process Manager, který izoluje každou aplikaci do samostatného procesu. Gecko implementuje specifikaci W3C Widget Packaging a rozšíření Mozilly pro přístup k hardwaru. Verze Gecka určuje, která Web API jsou vývojáři k dispozici.

Gaia — uživatelské rozhraní

Gaia — webové rozhraní samotného OS: zamykací obrazovka, domovská obrazovka (launcher), panel oznámení, obrazovka vytáčení, kontakty, SMS klient. Všechny systémové aplikace jsou stejné Open Web Apps. Vývojář může nahradit standardní kameru nebo klávesnici vlastní aplikací registrací příslušného activity handleru v manifestu.

javascript
// Kontrola verze KaiOS a dostupnosti API
function checkKaiOSVersion() {
    const ua = navigator.userAgent;
    let version = 'unknown';

    if (ua.includes('KAIOS/2.5')) {
        version = '2.5';
    } else if (ua.includes('KAIOS/3')) {
        version = '3.0';
    }

    const features = {
        geolocation: 'geolocation' in navigator,
        vibration: 'vibrate' in navigator,
        mozMobileConnection: 'mozMobileConnection' in navigator,
        mozTelephony: 'mozTelephony' in navigator,
        mozSms: 'mozSms' in navigator,
        bluetooth: 'bluetooth' in navigator
    };

    return { version, features };
}

// Kontrola přítomnosti Google Apps (pouze KaiOS 2.5.3+)
const systemInfo = checkKaiOSVersion();
console.log('KaiOS version:', systemInfo.version);
console.log('Available APIs:', JSON.stringify(systemInfo.features, null, 2));

// Použití vibrace s kontrolou dostupnosti
function triggerHapticFeedback() {
    if (navigator.vibrate) {
        navigator.vibrate([200, 100, 200]); // vibrace, pauza, vibrace
    }
}

Funkce checkKaiOSVersion čte User Agent pro určení verze KaiOS a kontroluje dostupnost klíčových Web API. Ve verzi 2.5 jsou k dispozici mozMobileConnection, mozTelephony, mozSms — ty chybí v běžných prohlížečích a jsou pro KaiOS jedinečné. Funkce triggerHapticFeedback používá Vibration API se zpětnou kompatibilitou.

Vytvoření aplikace pro KaiOS: struktura a manifest

Aplikace KaiOS — archiv ZIP (formát .zip, nikoli .apk) obsahující HTML soubory, CSS, JavaScript, obrázky a manifest. Struktura minimální aplikace zahrnuje manifest.webapp (popis aplikace), index.html (vstupní bod), style.css a icon.png (čtvercová ikona 90×90 pixelů). Manifest odpovídá specifikaci W3C Manifest for Web Apps.

Manifest manifest.webapp

Soubor manifest.webapp — hlavní konfigurační soubor aplikace KaiOS. Povinná pole: name (název), description (popis do 140 znaků), launch_path (cesta k index.html), icons (ikony o velikostech 30×30, 60×60, 90×90, 120×120 pixelů). Pole type: 'certified' (systémové aplikace), 'privileged' (přístup k Web API), 'web' (bez zvláštních práv). Oprávnění pro privilegované aplikace se uvádějí v poli permissions.

javascript
// manifest.webapp — konfigurace aplikace KaiOS
{
    "name": "Baterka",
    "description": "Zapíná a vypíná blesk fotoaparátu",
    "launch_path": "/index.html",
    "icons": {
        "30": "/icons/icon-30.png",
        "60": "/icons/icon-60.png",
        "90": "/icons/icon-90.png",
        "120": "/icons/icon-120.png"
    },
    "type": "privileged",
    "permissions": {
        "camera": {
            "description": "Potřebné k zapnutí blesku"
        }
    },
    "default_locale": "ru",
    "orientation": "portrait-primary",
    "fullscreen": true
}

Manifest uvádí, že aplikace má typ privileged — to poskytuje přístup k camera API přes permissions. Velikosti ikon jsou striktně 30×30, 60×60, 90×90 a 120×120 pixelů. Pole orientation omezuje orientaci na výšku — na tlačítkových telefonech obvykle není akcelerometr pro otáčení obrazovky. fullscreen: true skrývá stavový řádek.

Struktura HTML stránky

HTML5 stránka v KaiOS používá standardní značky s ohledem na omezenou obrazovku (obvykle 240×320 pixelů). Meta značka viewport je povinná: <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">. KaiOS nepodporuje dotykové události (na tlačítkových telefonech není dotyková obrazovka), veškerá navigace probíhá pomocí kláves: ArrowUp, ArrowDown pro pohyb, Enter pro výběr, Back pro návrat.

javascript
// index.html — jednoduchá aplikace baterky pro KaiOS
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport"
          content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>Svítilna</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <div id="app">
        <div id="status" class="status-off">Vypnuto</div>
        <div id="hint">Stiskněte Enter pro zapnutí</div>
    </div>

    <script>
        const statusEl = document.getElementById('status');
        const hintEl = document.getElementById('hint');
        let isFlashOn = false;
        let camera = null;

        async function initCamera() {
            try {
                camera = navigator.mozCameras.getListOfCameras()[0];
                const cameraControl = await
                    navigator.mozCameras.getCamera(camera, { mode: 'picture' });
                return cameraControl;
            } catch (e) {
                showError('Kamera je nedostupná: ' + e.message);
            }
        }

        async function toggleFlash() {
            const cam = await initCamera();
            if (!cam) return;

            isFlashOn = !isFlashOn;
            try {
                await cam.setConfiguration({
                    mode: 'picture',
                    flashMode: isFlashOn ? 'on' : 'off'
                });
                statusEl.textContent = isFlashOn ? 'Zapnuto' : 'Vypnuto';
                statusEl.className = isFlashOn ? 'status-on' : 'status-off';
            } catch (e) {
                showError('Chyba: ' + e.message);
            }
        }

        // Zpracování hardwarového tlačítka Enter
        document.addEventListener('keydown', function(e) {
            if (e.key === 'Enter') {
                toggleFlash();
            }
        });

        initCamera();
    </script>
</body>
</html>

Aplikace Baterka používá MozCamera API k ovládání blesku fotoaparátu. Uživatel stiskne hardwarové tlačítko Enter — spustí se obsluha keydown přepínající flashMode mezi on a off. Stav se zobrazuje v textovém bloku s třídou status-on/status-off pro vizuální indikaci. MozCamera API je k dispozici pouze pro privilegované aplikace s oprávněním camera v manifestu.

Web API KaiOS: práce s telefonem a hardwarem

KaiOS Web API — sada JavaScriptových rozhraní poskytujících přístup k hardwarovým možnostem telefonu. Většina API jsou proprietární rozšíření Mozilly (s předponou moz) a nejsou dostupná v běžných prohlížečích. Pro použití API musí mít aplikace v manifestu typ privileged nebo certified.

Hlavní Web API

MozMobileConnection — informace o síti: operátor, úroveň signálu, typ sítě (4G/3G/2G), IMEI, stav roamingu. MozTelephony — správa hovorů: vytáčení čísla, příjem, ukončení, konference, stav hovoru. MozSms — odesílání a příjem SMS, MMS, správa zpráv na SIM. MozContacts — čtení a zápis telefonního seznamu. MozBluetooth — správa Bluetooth: detekce zařízení, párování, přenos souborů. Push API — příjem push oznámení ze serveru.

javascript
// Práce s kontakty a hovory přes Web API KaiOS
const TelephonyManager = {
    // Uskutečnění hovoru na číslo
    async makeCall(phoneNumber) {
        if (!navigator.mozTelephony) {
            throw new Error('Telephony API je nedostupné');
        }

        const call = navigator.mozTelephony.dial(phoneNumber);
        call.onconnected = () => console.log('Hovor navázán');
        call.ondisconnected = () => console.log('Hovor ukončen');
        return call;
    },

    // Získání seznamu kontaktů z telefonního seznamu
    async getContacts() {
        const cursor = navigator.mozContacts.getAll({
            sortBy: 'familyName',
            sortOrder: 'ascending'
        });

        const contacts = [];
        return new Promise((resolve, reject) => {
            cursor.onsuccess = function() {
                if (this.result) {
                    contacts.push(this.result);
                    this.continue();
                } else {
                    resolve(contacts);
                }
            };
            cursor.onerror = function() {
                reject(this.error);
            };
        });
    },

    // Odeslání SMS
    async sendSms(phoneNumber, message) {
        if (!navigator.mozSms) {
            throw new Error('SMS API je nedostupné');
        }
        const request = navigator.mozSms.send(phoneNumber, message);
        return new Promise((resolve, reject) => {
            request.onsuccess = () => resolve(request.result);
            request.onerror = () => reject(request.error);
        });
    }
};

// Příklad použití
TelephonyManager.getContacts()
    .then(contacts => console.log('Nalezeno kontaktů:', contacts.length))
    .catch(err => console.error(err));

Objekt TelephonyManager kombinuje tři klíčová API KaiOS: mozTelephony pro hovory, mozContacts pro telefonní seznam a mozSms pro zprávy. getAll() s kurzorem — vzor pro asynchronní čtení velkých objemů dat (typické pro kontakty s více než 1000 záznamy). Všechna API vracejí DOMRequest s obsluhami onsuccess a onerror.

Omezení Web API

Web API KaiOS mají omezení: API pro hovory a SMS jsou dostupná pouze na telefonech (ne na tabletech), kamera — pouze s fyzickou kamerou, Bluetooth — omezený profil HSP/HFP. Push API vyžaduje podporu serveru Google Firebase (FCM) nebo vlastního serveru. API geolokace používá A-GPS nebo Cell ID v závislosti na hardwarové podpoře.

APITyp aplikaceDostupnostVerze KaiOS
MozMobileConnectionprivilegedVšechny telefony2.5+
MozTelephonyprivilegedPouze telefony2.5+
MozSmsprivilegedPouze telefony2.5+
MozContactsprivilegedVšechny telefony2.5+
MozBluetoothcertifiedS Bluetooth modulem2.5+
Geolocation APIwebS GPS/Cell ID2.5+
Push APIprivilegedS internetem3.0+
WebGL 2.0webS GPU akcelerací3.0+

UI a navigace: T9, tlačítka a obrazovka 240×320

Uživatelské rozhraní KaiOS je orientováno na ovládání klávesnicí T9 a hardwarovými tlačítky. Standardní rozlišení obrazovky — 240×320 pixelů (QVGA) u většiny tlačítkových telefonů. Absence dotykové obrazovky znamená, že veškerá navigace probíhá prostřednictvím událostí keydown/keyup: ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Enter, Back (nebo Escape).

Správa fokusu

KaiOS nepodporuje CSS :focus obvyklým způsobem — fokus je řízen pomocí tabindex a JavaScriptu. Vývojář musí ručně sledovat aktuálně vybraný prvek a přesouvat fokus při stisku kláves. Doporučuje se používat data-index na prvcích seznamu pro zjednodušení navigace. Vybraný prvek je obvykle zvýrazněn třídou .selected s vlastností CSS background-color v kontrastní barvě.

javascript
// Fokusová navigace v seznamu pro KaiOS
class ListNavigation {
    constructor(containerSelector) {
        this.container = document.querySelector(containerSelector);
        this.items = this.container.querySelectorAll('[data-index]');
        this.currentIndex = 0;
        this.init();
    }

    init() {
        this.updateFocus();

        document.addEventListener('keydown', (e) => {
            switch (e.key) {
                case 'ArrowUp':
                    e.preventDefault();
                    this.moveFocus(-1);
                    break;
                case 'ArrowDown':
                    e.preventDefault();
                    this.moveFocus(1);
                    break;
                case 'Enter':
                    e.preventDefault();
                    this.selectItem();
                    break;
                case 'Backspace':
                case 'Escape':
                    e.preventDefault();
                    this.goBack();
                    break;
            }
        });
    }

    moveFocus(direction) {
        this.items[this.currentIndex].classList.remove('selected');
        this.currentIndex = (this.currentIndex + direction + this.items.length) % this.items.length;
        this.updateFocus();
    }

    updateFocus() {
        const el = this.items[this.currentIndex];
        el.classList.add('selected');
        el.scrollIntoView({ block: 'nearest' });
    }

    selectItem() {
        const el = this.items[this.currentIndex];
        const event = new CustomEvent('itemselected', {
            detail: { index: this.currentIndex, element: el }
        });
        this.container.dispatchEvent(event);
    }

    goBack() {
        history.back();
    }
}

// Inicializace navigace pro seznam menu
const nav = new ListNavigation('#menu-list');
nav.container.addEventListener('itemselected', (e) => {
    console.log('Vybrán prvek:', e.detail.index);
});

Třída ListNavigation implementuje plnou fokusovou navigaci pro KaiOS. ArrowUp/ArrowDown přesouvají fokus cyklicky po prvcích s data-index. Enter vyvolá vlastní událost itemselected. Backspace/Escape se vracejí na předchozí obrazovku. scrollIntoView s block: nearest automaticky posouvá obrazovku, když prvek opustí viditelnou oblast.

CSS pro KaiOS

KaiOS 2.5 podporuje CSS 2.1 + částečně CSS3 (border-radius, box-shadow, gradients). Flexbox je podporován částečně v KaiOS 2.5, plně v KaiOS 3.0 včetně CSS Grid. Pro kompatibilitu se doporučuje použít rozvržení float s pevnou šířkou. Výchozí písmo — TizenSans nebo Noto Sans CJK pro asijské trhy. Velikost textu — 14-16 pixelů pro hlavní obsah, 18-20 pro nadpisy.

KaiStore a publikování aplikací

KaiStore — oficiální obchod s aplikacemi pro KaiOS, předinstalovaný na všech zařízeních. Vývojář se zaregistruje na vývojářském portálu KaiOS (developer.kaiostech.com), nahraje podepsaný ZIP balíček a vyplní popis. Moderace kontroluje bezpečnost, stabilitu a soulad s obsahem. Průměrná doba kontroly — 3-5 pracovních dnů.

Podepisování aplikace

KaiOS vyžaduje digitální podpis aplikace prostřednictvím KaiOS Certificate. Vývojář vygeneruje pár klíčů (soukromý + veřejný) pomocí nástroje kaios-sign, odešle veřejný klíč na vývojářský portál KaiOS a obdrží certifikát. Podepsaný soubor .zip obsahuje podpis ve složce META-INF. Bez podpisu se aplikace instaluje pouze na vývojářská zařízení.

Model distribuce a monetizace

KaiStore podporuje bezplatné aplikace, reklamu prostřednictvím KaiOS Ads SDK a nákupy v aplikaci prostřednictvím operátorského účtování (Direct Carrier Billing). Provize KaiStore — 30 % z příjmů. Alternativní kanál — předinstalace prostřednictvím výrobců OEM (Jio, Nokia, Alcatel, Doro). Pro předinstalaci je vyžadována přímá smlouva s výrobcem zařízení.

FázeAkceLhůta
RegistraceVytvoření účtu na vývojářském portálu KaiOS1 den
PodpisGenerování klíče, získání certifikátu1-2 dny
SestaveníZabalení .zip s manifestem a podpisem1 hodina
NahráníNahrání balíčku, vyplnění popisu1 den
ModeraceKontrola bezpečnosti a kvality3-5 dnů
PublikováníVydání v KaiStore pro všechny regiony1 den

Omezení KaiStore

KaiStore v některých zemích nepodporuje placené aplikace (platba pouze prostřednictvím operátorského účtování). Velikost aplikace je omezena na 10 MB pro stahování prostřednictvím sítí 2G/3G. Aplikace nesmí využívat více než 50 MB RAM. Přístup k API mozMobileConnection bez výslovného uvedení v manifestu je zakázán. Porušení zásad vede k blokaci účtu vývojáře.

Často kladené otázky

Co je KaiOS?

KaiOS — operační systém pro tlačítkové telefony založený na webovém enginu Gecko od Mozilly. Pracuje na zařízeních s 256-512 MB RAM, podporuje 4G VoLTE, GPS a Bluetooth. Aplikace se píší v HTML5, CSS a JavaScriptu. Podle Counterpoint Research je KaiOS nainstalován na více než 200 milionech zařízení.

Jaké jazyky se používají pro vývoj na KaiOS?

Jediný vývojový stack — HTML5, CSS a JavaScript. KaiOS nepodporuje nativní jazyky jako C++ nebo Java. Všechny aplikace jsou Open Web Apps podle specifikace W3C. Pro přístup k hardwarovým funkcím se používají Mozilla Web API s předponou moz. Aplikace se balí do archivu ZIP s manifest.webapp.

Jak distribuovat aplikace KaiOS?

Oficiální obchod — KaiStore s registrací na vývojářském portálu KaiOS. Aplikace je podepsána certifikátem vývojáře a nahrána ve formátu .zip. Moderace trvá 3-5 dní. Alternativní kanál — předinstalace na nová zařízení prostřednictvím smlouvy s výrobcem OEM. Provize KaiStore — 30 %.

Čím se KaiOS liší od Android Go?

KaiOS používá webový engine Gecko pro HTML5 aplikace a vyžaduje 256-512 MB RAM. Android Go spouští nativní APK na Dalvik/ART a vyžaduje 1-2 GB RAM. KaiOS funguje na tlačítkových telefonech do 30 USD, Android Go — na levných smartphonech od 50 USD. KaiOS spotřebovává méně energie a vydrží déle bez nabíjení.

Jaká API jsou k dispozici pro vývojáře KaiOS?

Hlavní API: MozMobileConnection (síť), MozTelephony (hovory), MozSms (SMS), MozContacts (kontakty), MozBluetooth (Bluetooth), Geolocation API, Vibration API, Push API, Notification API. Pro přístup k camera API je vyžadován typ aplikace privileged. Push API je dostupné od KaiOS 3.0.

Shrnutí

  • KaiOS — webový OS pro tlačítkové telefony na Gecko (B2G), podporuje HTML5 aplikace s 256-512 MB RAM
  • Architektura se skládá z Gonk (jádro Linux + ovladače), Gecko (webový engine) a Gaia (UI v HTML5)
  • Vývoj probíhá v HTML5/CSS/JS, aplikace — ZIP s manifest.webapp a digitálním podpisem
  • Web API zahrnují MozTelephony, MozSms, MozContacts, MozMobileConnection, MozBluetooth, Geolocation
  • Navigace hardwarovými tlačítky (Arrow, Enter, Back) prostřednictvím událostí keydown/keyup
  • KaiStore — obchod s aplikacemi s moderací 3-5 dní, provizí 30 % a operátorským účtováním
  • KaiOS 3.0 přidává Gecko 84, ES2020, WebGL 2.0, CSS Grid, Push API a vylepšený výkon

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také