Version: Smart Feature Phone 3.0
3.0 Overview
New Gecko
- Using Gecko version 84.0(Dec. 10, 2020)
- Gecko changes since version 48
- Enhanced Service Worker
- Modern JS (ECMAScript 2021)
- PWA (Progress Web App) support
- WebRender
- WebAssembly
- WebRTC and WebAudio improve
- WebGL 2 interface to OpenGL ES 3.0
- Quantum CSS (parallel CSS engine)
- TLS 1.0, 1.1 dropped (1.2,1.3 remain)
- Web Annimation API
- WebP support
- Media capabilities API
- Speech Sysnthesis API
- Web Authentication API
- Encryped Media Extension API (EME)
- Accepts some Webkit prefixed properties and attributes
New Gonk layer
- Adapt to BSP HIDL interface
- Unify the hardware abstraction interfaces defined by Google
- May ease the porting efforts if new BSP version or new chipset coming
Web API changes
- API domain name change
- New API
- Deprecated Web APIs
NewKai-RIL design
There are two RIL services design for KaiOS 2.5
- Kai-RIL: used for non-QCT platforms, implemented and maintained by KaiOS.
- QC-RIL(b2g-RIL): For QCT platform only, implemented, maintained and released by QCT.
Since QCT is giving up QC-RIL, we decided to adapt Kai-RL to all chip platflorms in 3.0 via HIDL interfaces.
V2.5 RIL
V3.0 RIL
Service Worker change
- No permission needed
- Clients.openApp is not supported, using Clients.openWindow by following W3C standards
- SystemMessage API supported and onsystemmessage event is introduced
- Can inspect service workers script by Remote Debugging
Geolocation change
- Geolocation API is following W3C standards
- QCT provides iZat (Qualcomm Location) service in both 2.5 and 3.0
- In 2.5, iZat is tightened up on QC-RIL. It provides GPS, AGPS, Wifi positioning, Cell info location.
- In 3.0, Kai-RIL connect iZat through HIDL interface. QCT didn’t maintain Wifi positioning and use Skyhook in place.
- Using iZat service needs agreement from QCT in both 2.5 and 3.0.
New Apps manager
In KaiOS 3.0, mozApps API is removed and new apps manager is implemented.
- webapps-manager permission
- App is launched with open api with url, Apps manager supports:
- App download/downloaded resume
- Install/sideload package apps
- Install PWA apps
- Update/Uninstall apps
- App signature check
- Get apps list
App types in KaiOS 3.0
- Signed App (priviliged app in 2.5)
- 3rd party packaged app preinstalled in /system, but copied to read-write /data or download from store and store in /data, both can be upgraded without FOTA
- PWA App (hosted app in 2.5)
- hosted 3rd apps from store or pwa webside
App origin changed in KaiOS 3.0
- “app://” are removed, all app origins are “http://”. For example,
http://launcher.localhost
for launcher app andhttps://example.com
for PWA - App manager uses app origin and manifest to tell app types
- Signed app:
http://app_name.localhost
- PWA:
https://example.com
- Signed app:
App manifest
- PWA manifest w3c spec: firefox 82
- Non-normative(B2G): b2g_features
- File extension
- The latest w3c spec[1] says .webmanifest is the official file extension for web apps, but we do have .webapp and .json before the spec defined it.
App manifest required
- name or short_name: string
- description: string
- lang: string
- id: string
- theme_color: string
- background_color: string
- orientation: string
- start_url: string
- icons: Array of object
App manifest optinal
- dir: string
- scope: string
- display: string
- orientation: string
- related_applications: Array of object
Permission Management
- The permission managment mechanism is the same between 2.5 and 3.0.
- The default permission table is changed in 3.0