packwise-skills 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursorrules +23 -23
- package/CLAUDE.md +25 -25
- package/LICENSE +21 -0
- package/README.md +404 -295
- package/audit.md +224 -224
- package/bin/packwise.js +322 -155
- package/install.sh +123 -0
- package/package.json +32 -31
- package/skill.md +944 -719
- package/sub-skills/ai/local-llm.md +183 -183
- package/sub-skills/ai/python-ml.md +164 -164
- package/sub-skills/backend/go-server.md +184 -184
- package/sub-skills/backend/java-spring.md +241 -241
- package/sub-skills/backend/node-server.md +164 -164
- package/sub-skills/backend/php-laravel.md +175 -175
- package/sub-skills/backend/python-server.md +164 -164
- package/sub-skills/backend/rust-backend.md +118 -118
- package/sub-skills/cli/python-cli.md +236 -236
- package/sub-skills/cli/sdk-library.md +497 -497
- package/sub-skills/cloud/ci-cd-pipelines.md +350 -350
- package/sub-skills/cloud/docker.md +191 -191
- package/sub-skills/cloud/kubernetes.md +277 -277
- package/sub-skills/cloud/payment-integration.md +307 -307
- package/sub-skills/cross-platform/multiplatform.md +252 -252
- package/sub-skills/desktop/electron.md +783 -783
- package/sub-skills/desktop/game-dev.md +443 -443
- package/sub-skills/desktop/native-app.md +123 -123
- package/sub-skills/desktop/scenarios.md +443 -443
- package/sub-skills/desktop/smart-platforms.md +324 -324
- package/sub-skills/desktop/tauri.md +428 -428
- package/sub-skills/desktop/vr-ar.md +252 -252
- package/sub-skills/desktop/web-to-desktop.md +153 -153
- package/sub-skills/embedded/car-infotainment.md +129 -129
- package/sub-skills/embedded/esp32.md +184 -184
- package/sub-skills/embedded/ros.md +150 -150
- package/sub-skills/embedded/stm32.md +160 -160
- package/sub-skills/mobile/android.md +322 -322
- package/sub-skills/mobile/capacitor.md +232 -232
- package/sub-skills/mobile/flutter-mobile.md +138 -138
- package/sub-skills/mobile/harmonyos.md +150 -150
- package/sub-skills/mobile/ios.md +245 -245
- package/sub-skills/mobile/react-native.md +443 -443
- package/sub-skills/mobile/wearables.md +230 -230
- package/sub-skills/plugins/browser-extension.md +308 -308
- package/sub-skills/plugins/jetbrains-plugin.md +226 -226
- package/sub-skills/plugins/vscode-extension.md +204 -204
- package/sub-skills/security/security-tools.md +174 -174
- package/sub-skills/web/monorepo.md +274 -274
- package/sub-skills/web/pwa.md +220 -220
- package/sub-skills/web/serverless-edge.md +295 -295
- package/sub-skills/web/spa.md +266 -266
- package/sub-skills/web/ssr.md +228 -228
- package/sub-skills/web/wasm.md +243 -243
|
@@ -1,153 +1,153 @@
|
|
|
1
|
-
# Web-to-Desktop Build Sub-Skill
|
|
2
|
-
|
|
3
|
-
Quickly wrap existing web applications as desktop clients. For scenarios not requiring complex backends, pursuing minimal footprint.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Solution Comparison
|
|
8
|
-
|
|
9
|
-
| Framework | Language | Size | Engine | Platform | Best For |
|
|
10
|
-
|-----------|---------|------|--------|----------|---------|
|
|
11
|
-
| Pake/PakePlus | Rust (Tauri) | ~3-10MB | System WebView | Win/Mac/Linux/Android | Website → desktop minimal wrapper |
|
|
12
|
-
| Neutralinojs | JS + C++ | ~1-3MB | System WebView | Win/Mac/Linux | Lightweight Electron alternative |
|
|
13
|
-
| Capacitor | JS/TS | ~20MB | Chromium (Electron) | Win/Mac/Linux/iOS/Android | Web → all platforms |
|
|
14
|
-
| Carlo | JS | ~0MB | System Chrome | Win/Mac/Linux | Users with Chrome installed |
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## Pake / PakePlus (Recommended: Minimal Wrapper)
|
|
19
|
-
|
|
20
|
-
**Version**: PakePlus 2.7.x (2025-2026) — the actively maintained successor to the original Pake project.
|
|
21
|
-
|
|
22
|
-
### When to Use
|
|
23
|
-
- Any website wrapped as desktop app
|
|
24
|
-
- No backend logic needed
|
|
25
|
-
- Minimal size (~3MB)
|
|
26
|
-
- Custom window styling
|
|
27
|
-
|
|
28
|
-
### Usage
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
npm install -g pake-cli
|
|
32
|
-
|
|
33
|
-
# Basic
|
|
34
|
-
pake https://example.com --name MyApp
|
|
35
|
-
|
|
36
|
-
# Custom window
|
|
37
|
-
pake https://example.com \
|
|
38
|
-
--name MyApp \
|
|
39
|
-
--icon ./icon.png \
|
|
40
|
-
--width 1200 --height 800 \
|
|
41
|
-
--hide-title-bar \
|
|
42
|
-
--fullscreen false \
|
|
43
|
-
--resizable true
|
|
44
|
-
|
|
45
|
-
# Multi-platform
|
|
46
|
-
pake https://example.com --name MyApp --platform all
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### Limitations
|
|
50
|
-
- No Node.js backend support
|
|
51
|
-
- No native module support
|
|
52
|
-
- Features limited to WebView capabilities
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Neutralinojs (5.6.x)
|
|
57
|
-
|
|
58
|
-
**Version**: Neutralinojs 5.6.x (2025-2026)
|
|
59
|
-
|
|
60
|
-
### When to Use
|
|
61
|
-
- Need lightweight backend (file system, network)
|
|
62
|
-
- Don't need full Node.js
|
|
63
|
-
- Minimal footprint (~2MB)
|
|
64
|
-
|
|
65
|
-
### Setup
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
npm install -g @nicepkg/neutralino
|
|
69
|
-
neu create myapp
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### Frontend API
|
|
73
|
-
|
|
74
|
-
```javascript
|
|
75
|
-
// File system
|
|
76
|
-
await Neutralino.filesystem.writeFile('data.txt', 'Hello');
|
|
77
|
-
const data = await Neutralino.filesystem.readFile('data.txt');
|
|
78
|
-
|
|
79
|
-
// Window control
|
|
80
|
-
await Neutralino.window.setTitle('New Title');
|
|
81
|
-
|
|
82
|
-
// System
|
|
83
|
-
await Neutralino.os.open('https://example.com');
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Build
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
neu run # Development
|
|
90
|
-
neu build # Production
|
|
91
|
-
# Output: dist/myapp-win_x64/, dist/myapp-mac_x64/, dist/myapp-linux_x64/
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Capacitor (Web → All Platforms)
|
|
97
|
-
|
|
98
|
-
### When to Use
|
|
99
|
-
- Existing web application
|
|
100
|
-
- Need desktop + mobile support simultaneously
|
|
101
|
-
- Need native API access (camera, filesystem, notifications)
|
|
102
|
-
|
|
103
|
-
### Setup
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
npm install @capacitor/core @capacitor/cli
|
|
107
|
-
npx cap init MyApp com.example.myapp
|
|
108
|
-
npm install @capacitor/electron
|
|
109
|
-
npx cap add electron
|
|
110
|
-
npx cap copy electron
|
|
111
|
-
npx cap open electron
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Native API Usage
|
|
115
|
-
|
|
116
|
-
```typescript
|
|
117
|
-
import { Filesystem, Directory } from '@capacitor/filesystem';
|
|
118
|
-
import { LocalNotifications } from '@capacitor/local-notifications';
|
|
119
|
-
|
|
120
|
-
await Filesystem.writeFile({
|
|
121
|
-
path: 'data.txt',
|
|
122
|
-
data: 'Hello World',
|
|
123
|
-
directory: Directory.Documents,
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
await LocalNotifications.schedule({
|
|
127
|
-
notifications: [{ title: 'Alert', body: 'New message', id: 1 }],
|
|
128
|
-
});
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## Selection Guide
|
|
134
|
-
|
|
135
|
-
| Your Situation | Recommended |
|
|
136
|
-
|---------------|------------|
|
|
137
|
-
| Pure website wrap, minimal size | Pake |
|
|
138
|
-
| Need filesystem/network backend | Neutralinojs |
|
|
139
|
-
| Need desktop + mobile unified | Capacitor |
|
|
140
|
-
| Need full Node.js backend | Electron (see electron.md) |
|
|
141
|
-
| Need Rust backend + minimal size | Tauri (see tauri.md) |
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
## Common Pitfalls
|
|
146
|
-
|
|
147
|
-
| Issue | Fix |
|
|
148
|
-
|-------|-----|
|
|
149
|
-
| WebView display differences | Use standard CSS, avoid experimental features |
|
|
150
|
-
| CORS cross-origin | Configure WebView to allow cross-origin or use proxy |
|
|
151
|
-
| WebView missing (Linux) | Install libwebkit2gtk-4.1-dev |
|
|
152
|
-
| Local storage lost | Use filesystem API instead of localStorage |
|
|
153
|
-
| Keyboard shortcut conflicts | Configure WebView to ignore system shortcuts |
|
|
1
|
+
# Web-to-Desktop Build Sub-Skill
|
|
2
|
+
|
|
3
|
+
Quickly wrap existing web applications as desktop clients. For scenarios not requiring complex backends, pursuing minimal footprint.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Solution Comparison
|
|
8
|
+
|
|
9
|
+
| Framework | Language | Size | Engine | Platform | Best For |
|
|
10
|
+
|-----------|---------|------|--------|----------|---------|
|
|
11
|
+
| Pake/PakePlus | Rust (Tauri) | ~3-10MB | System WebView | Win/Mac/Linux/Android | Website → desktop minimal wrapper |
|
|
12
|
+
| Neutralinojs | JS + C++ | ~1-3MB | System WebView | Win/Mac/Linux | Lightweight Electron alternative |
|
|
13
|
+
| Capacitor | JS/TS | ~20MB | Chromium (Electron) | Win/Mac/Linux/iOS/Android | Web → all platforms |
|
|
14
|
+
| Carlo | JS | ~0MB | System Chrome | Win/Mac/Linux | Users with Chrome installed |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Pake / PakePlus (Recommended: Minimal Wrapper)
|
|
19
|
+
|
|
20
|
+
**Version**: PakePlus 2.7.x (2025-2026) — the actively maintained successor to the original Pake project.
|
|
21
|
+
|
|
22
|
+
### When to Use
|
|
23
|
+
- Any website wrapped as desktop app
|
|
24
|
+
- No backend logic needed
|
|
25
|
+
- Minimal size (~3MB)
|
|
26
|
+
- Custom window styling
|
|
27
|
+
|
|
28
|
+
### Usage
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm install -g pake-cli
|
|
32
|
+
|
|
33
|
+
# Basic
|
|
34
|
+
pake https://example.com --name MyApp
|
|
35
|
+
|
|
36
|
+
# Custom window
|
|
37
|
+
pake https://example.com \
|
|
38
|
+
--name MyApp \
|
|
39
|
+
--icon ./icon.png \
|
|
40
|
+
--width 1200 --height 800 \
|
|
41
|
+
--hide-title-bar \
|
|
42
|
+
--fullscreen false \
|
|
43
|
+
--resizable true
|
|
44
|
+
|
|
45
|
+
# Multi-platform
|
|
46
|
+
pake https://example.com --name MyApp --platform all
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Limitations
|
|
50
|
+
- No Node.js backend support
|
|
51
|
+
- No native module support
|
|
52
|
+
- Features limited to WebView capabilities
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Neutralinojs (5.6.x)
|
|
57
|
+
|
|
58
|
+
**Version**: Neutralinojs 5.6.x (2025-2026)
|
|
59
|
+
|
|
60
|
+
### When to Use
|
|
61
|
+
- Need lightweight backend (file system, network)
|
|
62
|
+
- Don't need full Node.js
|
|
63
|
+
- Minimal footprint (~2MB)
|
|
64
|
+
|
|
65
|
+
### Setup
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npm install -g @nicepkg/neutralino
|
|
69
|
+
neu create myapp
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Frontend API
|
|
73
|
+
|
|
74
|
+
```javascript
|
|
75
|
+
// File system
|
|
76
|
+
await Neutralino.filesystem.writeFile('data.txt', 'Hello');
|
|
77
|
+
const data = await Neutralino.filesystem.readFile('data.txt');
|
|
78
|
+
|
|
79
|
+
// Window control
|
|
80
|
+
await Neutralino.window.setTitle('New Title');
|
|
81
|
+
|
|
82
|
+
// System
|
|
83
|
+
await Neutralino.os.open('https://example.com');
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Build
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
neu run # Development
|
|
90
|
+
neu build # Production
|
|
91
|
+
# Output: dist/myapp-win_x64/, dist/myapp-mac_x64/, dist/myapp-linux_x64/
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Capacitor (Web → All Platforms)
|
|
97
|
+
|
|
98
|
+
### When to Use
|
|
99
|
+
- Existing web application
|
|
100
|
+
- Need desktop + mobile support simultaneously
|
|
101
|
+
- Need native API access (camera, filesystem, notifications)
|
|
102
|
+
|
|
103
|
+
### Setup
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
npm install @capacitor/core @capacitor/cli
|
|
107
|
+
npx cap init MyApp com.example.myapp
|
|
108
|
+
npm install @capacitor/electron
|
|
109
|
+
npx cap add electron
|
|
110
|
+
npx cap copy electron
|
|
111
|
+
npx cap open electron
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Native API Usage
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
import { Filesystem, Directory } from '@capacitor/filesystem';
|
|
118
|
+
import { LocalNotifications } from '@capacitor/local-notifications';
|
|
119
|
+
|
|
120
|
+
await Filesystem.writeFile({
|
|
121
|
+
path: 'data.txt',
|
|
122
|
+
data: 'Hello World',
|
|
123
|
+
directory: Directory.Documents,
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
await LocalNotifications.schedule({
|
|
127
|
+
notifications: [{ title: 'Alert', body: 'New message', id: 1 }],
|
|
128
|
+
});
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Selection Guide
|
|
134
|
+
|
|
135
|
+
| Your Situation | Recommended |
|
|
136
|
+
|---------------|------------|
|
|
137
|
+
| Pure website wrap, minimal size | Pake |
|
|
138
|
+
| Need filesystem/network backend | Neutralinojs |
|
|
139
|
+
| Need desktop + mobile unified | Capacitor |
|
|
140
|
+
| Need full Node.js backend | Electron (see electron.md) |
|
|
141
|
+
| Need Rust backend + minimal size | Tauri (see tauri.md) |
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Common Pitfalls
|
|
146
|
+
|
|
147
|
+
| Issue | Fix |
|
|
148
|
+
|-------|-----|
|
|
149
|
+
| WebView display differences | Use standard CSS, avoid experimental features |
|
|
150
|
+
| CORS cross-origin | Configure WebView to allow cross-origin or use proxy |
|
|
151
|
+
| WebView missing (Linux) | Install libwebkit2gtk-4.1-dev |
|
|
152
|
+
| Local storage lost | Use filesystem API instead of localStorage |
|
|
153
|
+
| Keyboard shortcut conflicts | Configure WebView to ignore system shortcuts |
|
|
@@ -1,129 +1,129 @@
|
|
|
1
|
-
# Car Infotainment Build Sub-Skill
|
|
2
|
-
|
|
3
|
-
Build applications for automotive infotainment systems: Android Automotive OS, QNX, AGL (Automotive Grade Linux), and HarmonyOS Car.
|
|
4
|
-
|
|
5
|
-
**Current versions**: Android Automotive 14 / QNX 8.0 / AGL UCB 16 (2025-2026)
|
|
6
|
-
|
|
7
|
-
## When to Use
|
|
8
|
-
|
|
9
|
-
- In-vehicle infotainment (IVI) systems
|
|
10
|
-
- Digital instrument clusters
|
|
11
|
-
- Heads-up display (HUD) applications
|
|
12
|
-
- Rear-seat entertainment
|
|
13
|
-
- Telematics and fleet management
|
|
14
|
-
- EV charging station UI
|
|
15
|
-
|
|
16
|
-
## Platform Comparison
|
|
17
|
-
|
|
18
|
-
| Platform | Base OS | Language | Market Share | Best For |
|
|
19
|
-
|----------|---------|----------|-------------|---------|
|
|
20
|
-
| Android Automotive OS (AAOS) | Android 14 | Kotlin/Java | Growing fast | Mass-market vehicles (Volvo, GM, Ford, Honda) |
|
|
21
|
-
| QNX | QNX Neutrino RTOS | C/C++ | Largest (safety-critical) | Instrument clusters, safety systems |
|
|
22
|
-
| AGL | Linux | C/C++, HTML5/JS | Growing (open-source) | Custom IVI, fleet vehicles |
|
|
23
|
-
| HarmonyOS Car | HarmonyOS | ArkTS | China market | Huawei ecosystem vehicles |
|
|
24
|
-
| webOS Auto | Linux | JavaScript | Niche | LG-based IVI systems |
|
|
25
|
-
| Custom Linux (Yocto) | Linux | C/C++/Qt/QML | Many | Full control, custom hardware |
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Android Automotive OS (AAOS)
|
|
30
|
-
|
|
31
|
-
### Key Differences from Android Mobile
|
|
32
|
-
|
|
33
|
-
| Feature | Android Mobile | Android Automotive |
|
|
34
|
-
|---------|---------------|-------------------|
|
|
35
|
-
| Display | Single screen | Multiple displays (IVI, cluster, HUD) |
|
|
36
|
-
| Input | Touch, voice | Touch, rotary controller, steering wheel, voice |
|
|
37
|
-
| Audio | Single zone | Multi-zone (driver, passenger, rear) |
|
|
38
|
-
| Lifecycle | Phone lifecycle | Vehicle lifecycle (10+ years) |
|
|
39
|
-
|
|
40
|
-
### Build
|
|
41
|
-
|
|
42
|
-
```kotlin
|
|
43
|
-
// build.gradle.kts
|
|
44
|
-
android {
|
|
45
|
-
defaultConfig {
|
|
46
|
-
minSdk = 28
|
|
47
|
-
targetSdk = 34
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
dependencies {
|
|
52
|
-
implementation("androidx.car.app:app:1.7.0")
|
|
53
|
-
implementation("androidx.media3:media3-session:1.5.0")
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
```xml
|
|
58
|
-
<manifest>
|
|
59
|
-
<uses-feature android:name="android.hardware.type.automotive" android:required="true" />
|
|
60
|
-
<application>
|
|
61
|
-
<service android:name=".MyCarService" android:exported="true">
|
|
62
|
-
<intent-filter>
|
|
63
|
-
<action android:name="android.car.app.CarAppService" />
|
|
64
|
-
</intent-filter>
|
|
65
|
-
</service>
|
|
66
|
-
</application>
|
|
67
|
-
</manifest>
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
./gradlew assembleRelease
|
|
72
|
-
# Test with Android Automotive emulator in Android Studio
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## QNX (Safety-Critical)
|
|
78
|
-
|
|
79
|
-
- **Microkernel RTOS** — deterministic real-time behavior
|
|
80
|
-
- **Safety certified** — ISO 26262 ASIL-D, IEC 61508 SIL-3
|
|
81
|
-
- **Used by**: BlackBerry QNX, deployed in 200M+ vehicles
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
# Cross-compile from Linux/macOS host
|
|
85
|
-
qcc -Vgcc_ntoaarch64le -o myapp myapp.c -lGL -lEGL
|
|
86
|
-
|
|
87
|
-
# Build with CMake
|
|
88
|
-
cmake -DCMAKE_TOOLCHAIN_FILE=qnx-aarch64.cmake ..
|
|
89
|
-
make
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## AGL (Automotive Grade Linux)
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
# AGL uses Yocto/BitBake build system
|
|
98
|
-
repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo
|
|
99
|
-
repo sync
|
|
100
|
-
|
|
101
|
-
source meta-agl/scripts/aglsetup.sh -m qemux86-64 -b build agl-demo agl-appfw-smack
|
|
102
|
-
bitbake agl-demo-platform
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## Selection Guide
|
|
108
|
-
|
|
109
|
-
| Project Type | Recommended Platform |
|
|
110
|
-
|-------------|---------------------|
|
|
111
|
-
| Consumer car IVI | Android Automotive |
|
|
112
|
-
| Instrument cluster | QNX |
|
|
113
|
-
| Fleet management | AGL or custom Linux |
|
|
114
|
-
| Chinese market vehicle | HarmonyOS Car |
|
|
115
|
-
| Research/prototype | AGL or Raspberry Pi + custom |
|
|
116
|
-
| Motorcycle/scooter IVI | Custom Linux (Yocto/Buildroot) |
|
|
117
|
-
|
|
118
|
-
## Universal Car Software Packaging Checklist
|
|
119
|
-
|
|
120
|
-
1. **Driver distraction** — no interactive content while vehicle is moving
|
|
121
|
-
2. **Startup time** — must be < 2 seconds
|
|
122
|
-
3. **Temperature range** — test at -40°C to +85°C
|
|
123
|
-
4. **Long lifecycle** — support for 10+ years
|
|
124
|
-
5. **OTA updates** — must support over-the-air updates
|
|
125
|
-
6. **Multi-display** — support IVI + instrument cluster + HUD
|
|
126
|
-
7. **Audio zones** — separate audio for driver vs passenger
|
|
127
|
-
8. **Safety compliance** — ASIL rating if interacting with vehicle systems
|
|
128
|
-
9. **Power management** — handle ignition on/off, sleep/wake gracefully
|
|
129
|
-
10. **CAN bus integration** — vehicle data via CAN
|
|
1
|
+
# Car Infotainment Build Sub-Skill
|
|
2
|
+
|
|
3
|
+
Build applications for automotive infotainment systems: Android Automotive OS, QNX, AGL (Automotive Grade Linux), and HarmonyOS Car.
|
|
4
|
+
|
|
5
|
+
**Current versions**: Android Automotive 14 / QNX 8.0 / AGL UCB 16 (2025-2026)
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- In-vehicle infotainment (IVI) systems
|
|
10
|
+
- Digital instrument clusters
|
|
11
|
+
- Heads-up display (HUD) applications
|
|
12
|
+
- Rear-seat entertainment
|
|
13
|
+
- Telematics and fleet management
|
|
14
|
+
- EV charging station UI
|
|
15
|
+
|
|
16
|
+
## Platform Comparison
|
|
17
|
+
|
|
18
|
+
| Platform | Base OS | Language | Market Share | Best For |
|
|
19
|
+
|----------|---------|----------|-------------|---------|
|
|
20
|
+
| Android Automotive OS (AAOS) | Android 14 | Kotlin/Java | Growing fast | Mass-market vehicles (Volvo, GM, Ford, Honda) |
|
|
21
|
+
| QNX | QNX Neutrino RTOS | C/C++ | Largest (safety-critical) | Instrument clusters, safety systems |
|
|
22
|
+
| AGL | Linux | C/C++, HTML5/JS | Growing (open-source) | Custom IVI, fleet vehicles |
|
|
23
|
+
| HarmonyOS Car | HarmonyOS | ArkTS | China market | Huawei ecosystem vehicles |
|
|
24
|
+
| webOS Auto | Linux | JavaScript | Niche | LG-based IVI systems |
|
|
25
|
+
| Custom Linux (Yocto) | Linux | C/C++/Qt/QML | Many | Full control, custom hardware |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Android Automotive OS (AAOS)
|
|
30
|
+
|
|
31
|
+
### Key Differences from Android Mobile
|
|
32
|
+
|
|
33
|
+
| Feature | Android Mobile | Android Automotive |
|
|
34
|
+
|---------|---------------|-------------------|
|
|
35
|
+
| Display | Single screen | Multiple displays (IVI, cluster, HUD) |
|
|
36
|
+
| Input | Touch, voice | Touch, rotary controller, steering wheel, voice |
|
|
37
|
+
| Audio | Single zone | Multi-zone (driver, passenger, rear) |
|
|
38
|
+
| Lifecycle | Phone lifecycle | Vehicle lifecycle (10+ years) |
|
|
39
|
+
|
|
40
|
+
### Build
|
|
41
|
+
|
|
42
|
+
```kotlin
|
|
43
|
+
// build.gradle.kts
|
|
44
|
+
android {
|
|
45
|
+
defaultConfig {
|
|
46
|
+
minSdk = 28
|
|
47
|
+
targetSdk = 34
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
dependencies {
|
|
52
|
+
implementation("androidx.car.app:app:1.7.0")
|
|
53
|
+
implementation("androidx.media3:media3-session:1.5.0")
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```xml
|
|
58
|
+
<manifest>
|
|
59
|
+
<uses-feature android:name="android.hardware.type.automotive" android:required="true" />
|
|
60
|
+
<application>
|
|
61
|
+
<service android:name=".MyCarService" android:exported="true">
|
|
62
|
+
<intent-filter>
|
|
63
|
+
<action android:name="android.car.app.CarAppService" />
|
|
64
|
+
</intent-filter>
|
|
65
|
+
</service>
|
|
66
|
+
</application>
|
|
67
|
+
</manifest>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
./gradlew assembleRelease
|
|
72
|
+
# Test with Android Automotive emulator in Android Studio
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## QNX (Safety-Critical)
|
|
78
|
+
|
|
79
|
+
- **Microkernel RTOS** — deterministic real-time behavior
|
|
80
|
+
- **Safety certified** — ISO 26262 ASIL-D, IEC 61508 SIL-3
|
|
81
|
+
- **Used by**: BlackBerry QNX, deployed in 200M+ vehicles
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Cross-compile from Linux/macOS host
|
|
85
|
+
qcc -Vgcc_ntoaarch64le -o myapp myapp.c -lGL -lEGL
|
|
86
|
+
|
|
87
|
+
# Build with CMake
|
|
88
|
+
cmake -DCMAKE_TOOLCHAIN_FILE=qnx-aarch64.cmake ..
|
|
89
|
+
make
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## AGL (Automotive Grade Linux)
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# AGL uses Yocto/BitBake build system
|
|
98
|
+
repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo
|
|
99
|
+
repo sync
|
|
100
|
+
|
|
101
|
+
source meta-agl/scripts/aglsetup.sh -m qemux86-64 -b build agl-demo agl-appfw-smack
|
|
102
|
+
bitbake agl-demo-platform
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Selection Guide
|
|
108
|
+
|
|
109
|
+
| Project Type | Recommended Platform |
|
|
110
|
+
|-------------|---------------------|
|
|
111
|
+
| Consumer car IVI | Android Automotive |
|
|
112
|
+
| Instrument cluster | QNX |
|
|
113
|
+
| Fleet management | AGL or custom Linux |
|
|
114
|
+
| Chinese market vehicle | HarmonyOS Car |
|
|
115
|
+
| Research/prototype | AGL or Raspberry Pi + custom |
|
|
116
|
+
| Motorcycle/scooter IVI | Custom Linux (Yocto/Buildroot) |
|
|
117
|
+
|
|
118
|
+
## Universal Car Software Packaging Checklist
|
|
119
|
+
|
|
120
|
+
1. **Driver distraction** — no interactive content while vehicle is moving
|
|
121
|
+
2. **Startup time** — must be < 2 seconds
|
|
122
|
+
3. **Temperature range** — test at -40°C to +85°C
|
|
123
|
+
4. **Long lifecycle** — support for 10+ years
|
|
124
|
+
5. **OTA updates** — must support over-the-air updates
|
|
125
|
+
6. **Multi-display** — support IVI + instrument cluster + HUD
|
|
126
|
+
7. **Audio zones** — separate audio for driver vs passenger
|
|
127
|
+
8. **Safety compliance** — ASIL rating if interacting with vehicle systems
|
|
128
|
+
9. **Power management** — handle ignition on/off, sleep/wake gracefully
|
|
129
|
+
10. **CAN bus integration** — vehicle data via CAN
|