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,324 +1,324 @@
|
|
|
1
|
-
# Smart Platform Build Sub-Skill
|
|
2
|
-
|
|
3
|
-
Build apps for smart TVs, automotive infotainment, and other non-phone/tablet platforms.
|
|
4
|
-
|
|
5
|
-
**Current versions**: Android TV 14 / tvOS 18 / webOS 24 / Tizen 8.0 / CarPlay / Android Auto (2025-2026)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Android TV / Google TV
|
|
10
|
-
|
|
11
|
-
### When to Use
|
|
12
|
-
|
|
13
|
-
- Smart TV applications (streaming, gaming, information display)
|
|
14
|
-
- Google TV launcher integration
|
|
15
|
-
- Large-screen optimized UI
|
|
16
|
-
|
|
17
|
-
### Prerequisites
|
|
18
|
-
|
|
19
|
-
- Android Studio + Android TV SDK
|
|
20
|
-
- JDK 17
|
|
21
|
-
- Android TV emulator or Fire TV device
|
|
22
|
-
|
|
23
|
-
### Build
|
|
24
|
-
|
|
25
|
-
```kotlin
|
|
26
|
-
// build.gradle.kts
|
|
27
|
-
android {
|
|
28
|
-
defaultConfig {
|
|
29
|
-
minSdk = 21 // Android TV minimum
|
|
30
|
-
targetSdk = 34
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
dependencies {
|
|
35
|
-
// Leanback UI library (TV-optimized)
|
|
36
|
-
implementation("androidx.leanback:leanback:1.2.0")
|
|
37
|
-
// Media playback
|
|
38
|
-
implementation("androidx.media3:media3-exoplayer:1.5.0")
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
```xml
|
|
43
|
-
<!-- AndroidManifest.xml — TV-specific -->
|
|
44
|
-
<application>
|
|
45
|
-
<activity
|
|
46
|
-
android:name=".MainActivity"
|
|
47
|
-
android:banner="@drawable/tv_banner"
|
|
48
|
-
android:icon="@drawable/tv_icon"
|
|
49
|
-
android:logo="@drawable/tv_logo">
|
|
50
|
-
<intent-filter>
|
|
51
|
-
<action android:name="android.intent.action.MAIN" />
|
|
52
|
-
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
|
53
|
-
</intent-filter>
|
|
54
|
-
</activity>
|
|
55
|
-
|
|
56
|
-
<!-- Required: declare as TV app -->
|
|
57
|
-
<uses-feature
|
|
58
|
-
android:name="android.software.leanback"
|
|
59
|
-
android:required="true" />
|
|
60
|
-
<!-- Touchscreen NOT required for TV -->
|
|
61
|
-
<uses-feature
|
|
62
|
-
android:name="android.hardware.touchscreen"
|
|
63
|
-
android:required="false" />
|
|
64
|
-
</application>
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# Build
|
|
69
|
-
./gradlew assembleRelease
|
|
70
|
-
# Output: app/build/outputs/apk/release/app-release.apk
|
|
71
|
-
|
|
72
|
-
# Distribute: Google Play (TV section) or Amazon Appstore (Fire TV)
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Common Pitfalls
|
|
76
|
-
|
|
77
|
-
| Issue | Fix |
|
|
78
|
-
|-------|-----|
|
|
79
|
-
| App not showing on TV | Add `LEANBACK_LAUNCHER` intent filter; declare `android.software.leanback` |
|
|
80
|
-
| D-pad navigation broken | Use `Leanback` library; implement focus handling |
|
|
81
|
-
| No touchscreen on TV | All interactions must work with D-pad/remote |
|
|
82
|
-
| Banner image required | Provide 320x180 banner for TV launcher |
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Apple tvOS
|
|
87
|
-
|
|
88
|
-
### When to Use
|
|
89
|
-
|
|
90
|
-
- Apple TV apps (streaming, gaming, fitness)
|
|
91
|
-
- Integration with Apple ecosystem (AirPlay, HomeKit)
|
|
92
|
-
- SwiftUI-based large-screen apps
|
|
93
|
-
|
|
94
|
-
### Prerequisites
|
|
95
|
-
|
|
96
|
-
- macOS + Xcode 15+
|
|
97
|
-
- Apple Developer account ($99/year)
|
|
98
|
-
- Apple TV device or simulator
|
|
99
|
-
|
|
100
|
-
### Build
|
|
101
|
-
|
|
102
|
-
```swift
|
|
103
|
-
// tvOS app with SwiftUI
|
|
104
|
-
import SwiftUI
|
|
105
|
-
|
|
106
|
-
@main
|
|
107
|
-
struct MyTVApp: App {
|
|
108
|
-
var body: some Scene {
|
|
109
|
-
WindowGroup {
|
|
110
|
-
ContentView()
|
|
111
|
-
.focusable() // D-pad navigation
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
# Build
|
|
119
|
-
xcodebuild -scheme MyApp-tvOS -configuration Release -sdk appletvos archive -archivePath build/MyApp.xcarchive
|
|
120
|
-
|
|
121
|
-
# Or: Product → Archive → Distribute → App Store Connect
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### Common Pitfalls
|
|
125
|
-
|
|
126
|
-
| Issue | Fix |
|
|
127
|
-
|-------|-----|
|
|
128
|
-
| Focus navigation issues | Use `@FocusState` in SwiftUI; test with Siri Remote |
|
|
129
|
-
| No keyboard input | Design for on-screen keyboard; use dictation |
|
|
130
|
-
| App size limit | 4GB maximum for tvOS apps |
|
|
131
|
-
| Top Shelf extension | Implement for rich content when app is in top row |
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Samsung Tizen (Smart TV / Wearable)
|
|
136
|
-
|
|
137
|
-
### When to Use
|
|
138
|
-
|
|
139
|
-
- Samsung Smart TV apps (market leader in TVs)
|
|
140
|
-
- Samsung wearable apps (Galaxy Watch 3 and earlier)
|
|
141
|
-
- Legacy platform support
|
|
142
|
-
|
|
143
|
-
### Build
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
# Tizen Studio
|
|
147
|
-
tizen build -t mobile -c llvm -C Debug # Wearable
|
|
148
|
-
tizen build -t tv -c llvm -C Debug # Smart TV
|
|
149
|
-
|
|
150
|
-
# Package
|
|
151
|
-
tizen package -t wgt -s certificate-profile
|
|
152
|
-
# Output: .wgt file for Samsung Galaxy Store
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### Web Apps on Tizen
|
|
156
|
-
|
|
157
|
-
```html
|
|
158
|
-
<!-- Tizen supports web-based TV apps -->
|
|
159
|
-
<!-- config.xml -->
|
|
160
|
-
<widget xmlns="http://www.w3.org/ns/widgets" id="http://example.com/myapp" version="1.0.0">
|
|
161
|
-
<name>My TV App</name>
|
|
162
|
-
<content src="index.html" />
|
|
163
|
-
<tizen:application id="your-app-id" package="your-package" required_version="8.0"/>
|
|
164
|
-
</widget>
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## LG webOS (Smart TV)
|
|
170
|
-
|
|
171
|
-
### When to Use
|
|
172
|
-
|
|
173
|
-
- LG Smart TV applications
|
|
174
|
-
- Second largest smart TV platform globally
|
|
175
|
-
|
|
176
|
-
### Build
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
# Install webOS SDK (webOS TV SDK)
|
|
180
|
-
# webOS TV apps are web-based (HTML/CSS/JS)
|
|
181
|
-
|
|
182
|
-
# Create project
|
|
183
|
-
ares-generate -t basic my-tv-app
|
|
184
|
-
|
|
185
|
-
# Package
|
|
186
|
-
ares-package my-tv-app
|
|
187
|
-
# Output: .ipk file
|
|
188
|
-
|
|
189
|
-
# Install on TV (developer mode must be enabled)
|
|
190
|
-
ares-install --device tv my-tv-app_1.0.0_all.ipk
|
|
191
|
-
|
|
192
|
-
# Launch
|
|
193
|
-
ares-launch --device tv com.example.mytvapp
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### webOS Architecture
|
|
197
|
-
|
|
198
|
-
```
|
|
199
|
-
webOS TV App = Web Application (HTML5 + CSS3 + JavaScript)
|
|
200
|
-
├── index.html
|
|
201
|
-
├── appinfo.json ← App metadata
|
|
202
|
-
├── assets/
|
|
203
|
-
└── lib/
|
|
204
|
-
└── webOSTV.js ← webOS TV API library
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
```json
|
|
208
|
-
// appinfo.json
|
|
209
|
-
{
|
|
210
|
-
"id": "com.example.mytvapp",
|
|
211
|
-
"version": "1.0.0",
|
|
212
|
-
"vendor": "My Company",
|
|
213
|
-
"type": "web",
|
|
214
|
-
"main": "index.html",
|
|
215
|
-
"icon": "icon.png",
|
|
216
|
-
"largeIcon": "largeIcon.png"
|
|
217
|
-
}
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## CarPlay / Android Auto
|
|
223
|
-
|
|
224
|
-
### When to Use
|
|
225
|
-
|
|
226
|
-
- Navigation apps
|
|
227
|
-
- Music/podcast/audio apps
|
|
228
|
-
- Messaging apps (voice-driven)
|
|
229
|
-
- EV charging apps
|
|
230
|
-
|
|
231
|
-
### CarPlay (Apple)
|
|
232
|
-
|
|
233
|
-
```swift
|
|
234
|
-
// Requires Apple CarPlay entitlement (apply at developer.apple.com)
|
|
235
|
-
// Only for: Navigation, Audio, Messaging, EV Charging, Fueling, Driving Task, Quick Ordering
|
|
236
|
-
// UI provided by CarPlay framework — limited customization
|
|
237
|
-
|
|
238
|
-
import CarPlay
|
|
239
|
-
|
|
240
|
-
class AppDelegate: NSObject, UIApplicationDelegate, CPApplicationDelegate {
|
|
241
|
-
func application(_ application: UIApplication,
|
|
242
|
-
didConnect carInterfaceController: CPInterfaceController,
|
|
243
|
-
to window: CPWindow) {
|
|
244
|
-
// Set up CarPlay scene
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
### Android Auto
|
|
250
|
-
|
|
251
|
-
```xml
|
|
252
|
-
<!-- AndroidManifest.xml -->
|
|
253
|
-
<meta-data
|
|
254
|
-
android:name="com.google.android.gms.car.application"
|
|
255
|
-
android:resource="@xml/automotive_app_desc" />
|
|
256
|
-
|
|
257
|
-
<!-- res/xml/automotive_app_desc.xml -->
|
|
258
|
-
<automotiveApp>
|
|
259
|
-
<uses name="media" /> <!-- Audio apps -->
|
|
260
|
-
<uses name="template" /> <!-- Navigation, messaging -->
|
|
261
|
-
</automotiveApp>
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
### Common Pitfalls
|
|
265
|
-
|
|
266
|
-
| Issue | Fix |
|
|
267
|
-
|-------|-----|
|
|
268
|
-
| CarPlay entitlement rejected | Only approved app categories are accepted; apply early |
|
|
269
|
-
| Android Auto distraction guidelines | No video; no text input while driving; voice-only interaction |
|
|
270
|
-
| Simulator testing | Use Xcode CarPlay Simulator (CarPlay) / Desktop Head Unit (Android Auto) |
|
|
271
|
-
| Limited UI customization | Both platforms use template-based UI; no custom layouts |
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## Raspberry Pi / Linux SBC
|
|
276
|
-
|
|
277
|
-
### When to Use
|
|
278
|
-
|
|
279
|
-
- Digital signage
|
|
280
|
-
- IoT dashboards
|
|
281
|
-
- Kiosk applications
|
|
282
|
-
- Home automation displays
|
|
283
|
-
|
|
284
|
-
### Build
|
|
285
|
-
|
|
286
|
-
```bash
|
|
287
|
-
# Cross-compile for ARM
|
|
288
|
-
# Electron:
|
|
289
|
-
npx electron-builder --linux --arm64 # Raspberry Pi 4/5 (64-bit)
|
|
290
|
-
npx electron-builder --linux --armv7l # Raspberry Pi 3 (32-bit)
|
|
291
|
-
|
|
292
|
-
# Tauri:
|
|
293
|
-
cargo tauri build --target aarch64-unknown-linux-gnu
|
|
294
|
-
|
|
295
|
-
# .NET:
|
|
296
|
-
dotnet publish -r linux-arm64 --self-contained
|
|
297
|
-
|
|
298
|
-
# Flutter:
|
|
299
|
-
flutter build linux --target-arch arm64
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
### Packaging for Raspberry Pi OS
|
|
303
|
-
|
|
304
|
-
```bash
|
|
305
|
-
# .deb package (native to Raspberry Pi OS/Debian)
|
|
306
|
-
dpkg-deb --build myapp-deb myapp_1.0.0_arm64.deb
|
|
307
|
-
|
|
308
|
-
# Install on Pi
|
|
309
|
-
sudo dpkg -i myapp_1.0.0_arm64.deb
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
---
|
|
313
|
-
|
|
314
|
-
## Selection Guide
|
|
315
|
-
|
|
316
|
-
| Platform | App Type | Language | Distribution |
|
|
317
|
-
|----------|----------|----------|-------------|
|
|
318
|
-
| Android TV / Google TV | Streaming, gaming, info | Kotlin/Java | Google Play |
|
|
319
|
-
| Apple TV | Streaming, fitness, gaming | Swift | App Store |
|
|
320
|
-
| Samsung Tizen TV | Streaming, gaming | C# / Web (JS) | Samsung Apps |
|
|
321
|
-
| LG webOS TV | Streaming, gaming | JavaScript (Web) | LG Content Store |
|
|
322
|
-
| CarPlay | Navigation, audio, messaging | Swift | App Store (entitlement required) |
|
|
323
|
-
| Android Auto | Navigation, audio, messaging | Kotlin/Java | Google Play |
|
|
324
|
-
| Raspberry Pi | Kiosk, signage, IoT | Any | .deb / direct install |
|
|
1
|
+
# Smart Platform Build Sub-Skill
|
|
2
|
+
|
|
3
|
+
Build apps for smart TVs, automotive infotainment, and other non-phone/tablet platforms.
|
|
4
|
+
|
|
5
|
+
**Current versions**: Android TV 14 / tvOS 18 / webOS 24 / Tizen 8.0 / CarPlay / Android Auto (2025-2026)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Android TV / Google TV
|
|
10
|
+
|
|
11
|
+
### When to Use
|
|
12
|
+
|
|
13
|
+
- Smart TV applications (streaming, gaming, information display)
|
|
14
|
+
- Google TV launcher integration
|
|
15
|
+
- Large-screen optimized UI
|
|
16
|
+
|
|
17
|
+
### Prerequisites
|
|
18
|
+
|
|
19
|
+
- Android Studio + Android TV SDK
|
|
20
|
+
- JDK 17
|
|
21
|
+
- Android TV emulator or Fire TV device
|
|
22
|
+
|
|
23
|
+
### Build
|
|
24
|
+
|
|
25
|
+
```kotlin
|
|
26
|
+
// build.gradle.kts
|
|
27
|
+
android {
|
|
28
|
+
defaultConfig {
|
|
29
|
+
minSdk = 21 // Android TV minimum
|
|
30
|
+
targetSdk = 34
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
dependencies {
|
|
35
|
+
// Leanback UI library (TV-optimized)
|
|
36
|
+
implementation("androidx.leanback:leanback:1.2.0")
|
|
37
|
+
// Media playback
|
|
38
|
+
implementation("androidx.media3:media3-exoplayer:1.5.0")
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```xml
|
|
43
|
+
<!-- AndroidManifest.xml — TV-specific -->
|
|
44
|
+
<application>
|
|
45
|
+
<activity
|
|
46
|
+
android:name=".MainActivity"
|
|
47
|
+
android:banner="@drawable/tv_banner"
|
|
48
|
+
android:icon="@drawable/tv_icon"
|
|
49
|
+
android:logo="@drawable/tv_logo">
|
|
50
|
+
<intent-filter>
|
|
51
|
+
<action android:name="android.intent.action.MAIN" />
|
|
52
|
+
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
|
53
|
+
</intent-filter>
|
|
54
|
+
</activity>
|
|
55
|
+
|
|
56
|
+
<!-- Required: declare as TV app -->
|
|
57
|
+
<uses-feature
|
|
58
|
+
android:name="android.software.leanback"
|
|
59
|
+
android:required="true" />
|
|
60
|
+
<!-- Touchscreen NOT required for TV -->
|
|
61
|
+
<uses-feature
|
|
62
|
+
android:name="android.hardware.touchscreen"
|
|
63
|
+
android:required="false" />
|
|
64
|
+
</application>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Build
|
|
69
|
+
./gradlew assembleRelease
|
|
70
|
+
# Output: app/build/outputs/apk/release/app-release.apk
|
|
71
|
+
|
|
72
|
+
# Distribute: Google Play (TV section) or Amazon Appstore (Fire TV)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Common Pitfalls
|
|
76
|
+
|
|
77
|
+
| Issue | Fix |
|
|
78
|
+
|-------|-----|
|
|
79
|
+
| App not showing on TV | Add `LEANBACK_LAUNCHER` intent filter; declare `android.software.leanback` |
|
|
80
|
+
| D-pad navigation broken | Use `Leanback` library; implement focus handling |
|
|
81
|
+
| No touchscreen on TV | All interactions must work with D-pad/remote |
|
|
82
|
+
| Banner image required | Provide 320x180 banner for TV launcher |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Apple tvOS
|
|
87
|
+
|
|
88
|
+
### When to Use
|
|
89
|
+
|
|
90
|
+
- Apple TV apps (streaming, gaming, fitness)
|
|
91
|
+
- Integration with Apple ecosystem (AirPlay, HomeKit)
|
|
92
|
+
- SwiftUI-based large-screen apps
|
|
93
|
+
|
|
94
|
+
### Prerequisites
|
|
95
|
+
|
|
96
|
+
- macOS + Xcode 15+
|
|
97
|
+
- Apple Developer account ($99/year)
|
|
98
|
+
- Apple TV device or simulator
|
|
99
|
+
|
|
100
|
+
### Build
|
|
101
|
+
|
|
102
|
+
```swift
|
|
103
|
+
// tvOS app with SwiftUI
|
|
104
|
+
import SwiftUI
|
|
105
|
+
|
|
106
|
+
@main
|
|
107
|
+
struct MyTVApp: App {
|
|
108
|
+
var body: some Scene {
|
|
109
|
+
WindowGroup {
|
|
110
|
+
ContentView()
|
|
111
|
+
.focusable() // D-pad navigation
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Build
|
|
119
|
+
xcodebuild -scheme MyApp-tvOS -configuration Release -sdk appletvos archive -archivePath build/MyApp.xcarchive
|
|
120
|
+
|
|
121
|
+
# Or: Product → Archive → Distribute → App Store Connect
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Common Pitfalls
|
|
125
|
+
|
|
126
|
+
| Issue | Fix |
|
|
127
|
+
|-------|-----|
|
|
128
|
+
| Focus navigation issues | Use `@FocusState` in SwiftUI; test with Siri Remote |
|
|
129
|
+
| No keyboard input | Design for on-screen keyboard; use dictation |
|
|
130
|
+
| App size limit | 4GB maximum for tvOS apps |
|
|
131
|
+
| Top Shelf extension | Implement for rich content when app is in top row |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Samsung Tizen (Smart TV / Wearable)
|
|
136
|
+
|
|
137
|
+
### When to Use
|
|
138
|
+
|
|
139
|
+
- Samsung Smart TV apps (market leader in TVs)
|
|
140
|
+
- Samsung wearable apps (Galaxy Watch 3 and earlier)
|
|
141
|
+
- Legacy platform support
|
|
142
|
+
|
|
143
|
+
### Build
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# Tizen Studio
|
|
147
|
+
tizen build -t mobile -c llvm -C Debug # Wearable
|
|
148
|
+
tizen build -t tv -c llvm -C Debug # Smart TV
|
|
149
|
+
|
|
150
|
+
# Package
|
|
151
|
+
tizen package -t wgt -s certificate-profile
|
|
152
|
+
# Output: .wgt file for Samsung Galaxy Store
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Web Apps on Tizen
|
|
156
|
+
|
|
157
|
+
```html
|
|
158
|
+
<!-- Tizen supports web-based TV apps -->
|
|
159
|
+
<!-- config.xml -->
|
|
160
|
+
<widget xmlns="http://www.w3.org/ns/widgets" id="http://example.com/myapp" version="1.0.0">
|
|
161
|
+
<name>My TV App</name>
|
|
162
|
+
<content src="index.html" />
|
|
163
|
+
<tizen:application id="your-app-id" package="your-package" required_version="8.0"/>
|
|
164
|
+
</widget>
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## LG webOS (Smart TV)
|
|
170
|
+
|
|
171
|
+
### When to Use
|
|
172
|
+
|
|
173
|
+
- LG Smart TV applications
|
|
174
|
+
- Second largest smart TV platform globally
|
|
175
|
+
|
|
176
|
+
### Build
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
# Install webOS SDK (webOS TV SDK)
|
|
180
|
+
# webOS TV apps are web-based (HTML/CSS/JS)
|
|
181
|
+
|
|
182
|
+
# Create project
|
|
183
|
+
ares-generate -t basic my-tv-app
|
|
184
|
+
|
|
185
|
+
# Package
|
|
186
|
+
ares-package my-tv-app
|
|
187
|
+
# Output: .ipk file
|
|
188
|
+
|
|
189
|
+
# Install on TV (developer mode must be enabled)
|
|
190
|
+
ares-install --device tv my-tv-app_1.0.0_all.ipk
|
|
191
|
+
|
|
192
|
+
# Launch
|
|
193
|
+
ares-launch --device tv com.example.mytvapp
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### webOS Architecture
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
webOS TV App = Web Application (HTML5 + CSS3 + JavaScript)
|
|
200
|
+
├── index.html
|
|
201
|
+
├── appinfo.json ← App metadata
|
|
202
|
+
├── assets/
|
|
203
|
+
└── lib/
|
|
204
|
+
└── webOSTV.js ← webOS TV API library
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
```json
|
|
208
|
+
// appinfo.json
|
|
209
|
+
{
|
|
210
|
+
"id": "com.example.mytvapp",
|
|
211
|
+
"version": "1.0.0",
|
|
212
|
+
"vendor": "My Company",
|
|
213
|
+
"type": "web",
|
|
214
|
+
"main": "index.html",
|
|
215
|
+
"icon": "icon.png",
|
|
216
|
+
"largeIcon": "largeIcon.png"
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## CarPlay / Android Auto
|
|
223
|
+
|
|
224
|
+
### When to Use
|
|
225
|
+
|
|
226
|
+
- Navigation apps
|
|
227
|
+
- Music/podcast/audio apps
|
|
228
|
+
- Messaging apps (voice-driven)
|
|
229
|
+
- EV charging apps
|
|
230
|
+
|
|
231
|
+
### CarPlay (Apple)
|
|
232
|
+
|
|
233
|
+
```swift
|
|
234
|
+
// Requires Apple CarPlay entitlement (apply at developer.apple.com)
|
|
235
|
+
// Only for: Navigation, Audio, Messaging, EV Charging, Fueling, Driving Task, Quick Ordering
|
|
236
|
+
// UI provided by CarPlay framework — limited customization
|
|
237
|
+
|
|
238
|
+
import CarPlay
|
|
239
|
+
|
|
240
|
+
class AppDelegate: NSObject, UIApplicationDelegate, CPApplicationDelegate {
|
|
241
|
+
func application(_ application: UIApplication,
|
|
242
|
+
didConnect carInterfaceController: CPInterfaceController,
|
|
243
|
+
to window: CPWindow) {
|
|
244
|
+
// Set up CarPlay scene
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Android Auto
|
|
250
|
+
|
|
251
|
+
```xml
|
|
252
|
+
<!-- AndroidManifest.xml -->
|
|
253
|
+
<meta-data
|
|
254
|
+
android:name="com.google.android.gms.car.application"
|
|
255
|
+
android:resource="@xml/automotive_app_desc" />
|
|
256
|
+
|
|
257
|
+
<!-- res/xml/automotive_app_desc.xml -->
|
|
258
|
+
<automotiveApp>
|
|
259
|
+
<uses name="media" /> <!-- Audio apps -->
|
|
260
|
+
<uses name="template" /> <!-- Navigation, messaging -->
|
|
261
|
+
</automotiveApp>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Common Pitfalls
|
|
265
|
+
|
|
266
|
+
| Issue | Fix |
|
|
267
|
+
|-------|-----|
|
|
268
|
+
| CarPlay entitlement rejected | Only approved app categories are accepted; apply early |
|
|
269
|
+
| Android Auto distraction guidelines | No video; no text input while driving; voice-only interaction |
|
|
270
|
+
| Simulator testing | Use Xcode CarPlay Simulator (CarPlay) / Desktop Head Unit (Android Auto) |
|
|
271
|
+
| Limited UI customization | Both platforms use template-based UI; no custom layouts |
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Raspberry Pi / Linux SBC
|
|
276
|
+
|
|
277
|
+
### When to Use
|
|
278
|
+
|
|
279
|
+
- Digital signage
|
|
280
|
+
- IoT dashboards
|
|
281
|
+
- Kiosk applications
|
|
282
|
+
- Home automation displays
|
|
283
|
+
|
|
284
|
+
### Build
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
# Cross-compile for ARM
|
|
288
|
+
# Electron:
|
|
289
|
+
npx electron-builder --linux --arm64 # Raspberry Pi 4/5 (64-bit)
|
|
290
|
+
npx electron-builder --linux --armv7l # Raspberry Pi 3 (32-bit)
|
|
291
|
+
|
|
292
|
+
# Tauri:
|
|
293
|
+
cargo tauri build --target aarch64-unknown-linux-gnu
|
|
294
|
+
|
|
295
|
+
# .NET:
|
|
296
|
+
dotnet publish -r linux-arm64 --self-contained
|
|
297
|
+
|
|
298
|
+
# Flutter:
|
|
299
|
+
flutter build linux --target-arch arm64
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Packaging for Raspberry Pi OS
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
# .deb package (native to Raspberry Pi OS/Debian)
|
|
306
|
+
dpkg-deb --build myapp-deb myapp_1.0.0_arm64.deb
|
|
307
|
+
|
|
308
|
+
# Install on Pi
|
|
309
|
+
sudo dpkg -i myapp_1.0.0_arm64.deb
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## Selection Guide
|
|
315
|
+
|
|
316
|
+
| Platform | App Type | Language | Distribution |
|
|
317
|
+
|----------|----------|----------|-------------|
|
|
318
|
+
| Android TV / Google TV | Streaming, gaming, info | Kotlin/Java | Google Play |
|
|
319
|
+
| Apple TV | Streaming, fitness, gaming | Swift | App Store |
|
|
320
|
+
| Samsung Tizen TV | Streaming, gaming | C# / Web (JS) | Samsung Apps |
|
|
321
|
+
| LG webOS TV | Streaming, gaming | JavaScript (Web) | LG Content Store |
|
|
322
|
+
| CarPlay | Navigation, audio, messaging | Swift | App Store (entitlement required) |
|
|
323
|
+
| Android Auto | Navigation, audio, messaging | Kotlin/Java | Google Play |
|
|
324
|
+
| Raspberry Pi | Kiosk, signage, IoT | Any | .deb / direct install |
|