Skip to content

Commit 4dcba2b

Browse files
author
Lalit Sharma
committed
chore(release): add Wear OS AAB/APK release assets, update wear docs, and bump mobile to v1.1.9
1 parent 10d2591 commit 4dcba2b

6 files changed

Lines changed: 90 additions & 7 deletions

File tree

.github/workflows/eas-build.yml

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ jobs:
114114
exit 1
115115
fi
116116
117-
- name: Build iOS and Android (AAB + APK + Wear AAB)
117+
- name: Build iOS and Android (AAB + APK + Wear AAB + Wear APK)
118118
working-directory: apps/mobile
119119
env:
120120
EAS_LOCAL_BUILD_ARTIFACTS_DIR: ${{ github.workspace }}/artifacts/raw
@@ -156,6 +156,7 @@ jobs:
156156
pnpm exec eas build --profile production --platform android --local --non-interactive
157157
pnpm exec eas build --profile production-apk --platform android --local --non-interactive
158158
pnpm exec eas build --profile production-wear --platform android --local --non-interactive
159+
pnpm exec eas build --profile production-wear-apk --platform android --local --non-interactive
159160
160161
- name: Collect build artifacts
161162
run: |
@@ -167,6 +168,7 @@ jobs:
167168
android_aab_asset_name="${artifact_prefix}.aab"
168169
android_apk_asset_name="${artifact_prefix}.apk"
169170
wear_aab_asset_name="${artifact_prefix}-wear.aab"
171+
wear_apk_asset_name="${artifact_prefix}-wear.apk"
170172
171173
ios_artifact="$(find artifacts/raw -type f -name '*.ipa' | head -n 1 || true)"
172174
if [ -z "$ios_artifact" ]; then
@@ -228,6 +230,19 @@ jobs:
228230
fi
229231
cp "$android_apk_artifact" "artifacts/submission/$android_apk_asset_name"
230232
233+
wear_apk_artifact="$(find artifacts/raw -type f -name 'wear-release.apk' | head -n 1 || true)"
234+
if [ -z "$wear_apk_artifact" ]; then
235+
wear_apk_artifact="$(printf '%s\n' "${apk_artifacts[@]}" | grep -i 'wear' | head -n 1 || true)"
236+
fi
237+
if [ -z "$wear_apk_artifact" ] && [ "${#apk_artifacts[@]}" -ge 2 ]; then
238+
wear_apk_artifact="${apk_artifacts[$((${#apk_artifacts[@]} - 1))]}"
239+
fi
240+
if [ -z "$wear_apk_artifact" ] || [ "$wear_apk_artifact" = "$android_apk_artifact" ]; then
241+
echo "Missing Wear OS artifact (.apk) in artifacts/raw."
242+
exit 1
243+
fi
244+
cp "$wear_apk_artifact" "artifacts/submission/$wear_apk_asset_name"
245+
231246
ls -lah artifacts/submission
232247
233248
- name: Upload build artifacts
@@ -432,6 +447,7 @@ jobs:
432447
echo "android_aab=${artifact_prefix}.aab"
433448
echo "android_apk=${artifact_prefix}.apk"
434449
echo "wear_aab=${artifact_prefix}-wear.aab"
450+
echo "wear_apk=${artifact_prefix}-wear.apk"
435451
} >> "$GITHUB_OUTPUT"
436452
437453
- name: Validate submission artifacts
@@ -442,6 +458,7 @@ jobs:
442458
android_aab_asset="${{ steps.artifact_names.outputs.android_aab }}"
443459
android_apk_asset="${{ steps.artifact_names.outputs.android_apk }}"
444460
wear_aab_asset="${{ steps.artifact_names.outputs.wear_aab }}"
461+
wear_apk_asset="${{ steps.artifact_names.outputs.wear_apk }}"
445462
446463
if [ ! -f "$artifact_root/$ios_asset" ]; then
447464
echo "Missing iOS artifact at $artifact_root/$ios_asset."
@@ -458,11 +475,15 @@ jobs:
458475
exit 1
459476
fi
460477
461-
# Wear OS artifact validation disabled for now
462-
# if [ ! -f "$artifact_root/$wear_aab_asset" ]; then
463-
# echo "Missing Wear OS artifact at $artifact_root/$wear_aab_asset."
464-
# exit 1
465-
# fi
478+
if [ ! -f "$artifact_root/$wear_aab_asset" ]; then
479+
echo "Missing Wear OS artifact at $artifact_root/$wear_aab_asset."
480+
exit 1
481+
fi
482+
483+
if [ ! -f "$artifact_root/$wear_apk_asset" ]; then
484+
echo "Missing Wear OS artifact at $artifact_root/$wear_apk_asset."
485+
exit 1
486+
fi
466487
467488
- name: Prepare GitHub release assets
468489
id: release_assets
@@ -475,6 +496,8 @@ jobs:
475496
echo "artifacts/submission/${{ steps.artifact_names.outputs.ios }}"
476497
echo "artifacts/submission/${{ steps.artifact_names.outputs.android_aab }}"
477498
echo "artifacts/submission/${{ steps.artifact_names.outputs.android_apk }}"
499+
echo "artifacts/submission/${{ steps.artifact_names.outputs.wear_aab }}"
500+
echo "artifacts/submission/${{ steps.artifact_names.outputs.wear_apk }}"
478501
echo "EOF"
479502
} >> "$GITHUB_OUTPUT"
480503

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.1.9] — 2026-02-21
9+
10+
### Added
11+
- Added `production-wear-apk` EAS build profile in `apps/mobile/eas.json` to produce Wear OS APK output (`wear-release.apk`) for release packaging.
12+
13+
### Changed
14+
- Updated `.github/workflows/eas-build.yml` to build both Wear OS artifacts (`wear-release.aab` and `wear-release.apk`) and attach both to GitHub releases.
15+
- Kept store submission scoped to the phone Android AAB only; Wear OS artifacts are released on GitHub and not uploaded to Google Play.
16+
817
## [1.1.8] — 2026-02-21
918

1019
### Added

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,13 @@ pnpm -C apps/mobile android
335335
pnpm -C apps/mobile web
336336
```
337337

338+
### Option 5: Wear OS emulator (native watch module)
339+
340+
The Wear OS companion app is a separate native module (`apps/mobile/android/wear`) and is not launched by Expo commands above.
341+
342+
Use the local simulator build/install/run guide in:
343+
- [documents/guides/setup-and-development.md#wear-os-companion-on-local-emulator](documents/guides/setup-and-development.md#wear-os-companion-on-local-emulator)
344+
338345
## Running Tests and Quality Checks
339346

340347
From the repo root:

apps/mobile/eas.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@
5151
"gradleCommand": ":wear:bundleRelease",
5252
"applicationArchivePath": "android/wear/build/outputs/bundle/release/wear-release.aab"
5353
}
54+
},
55+
"production-wear-apk": {
56+
"extends": "production-wear",
57+
"android": {
58+
"gradleCommand": ":wear:assembleRelease",
59+
"applicationArchivePath": "android/wear/build/outputs/apk/release/wear-release.apk"
60+
}
5461
}
5562
},
5663
"submit": {

apps/mobile/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@eclipse-timer/mobile",
3-
"version": "1.1.8",
3+
"version": "1.1.9",
44
"private": true,
55
"main": "index.js",
66
"scripts": {

documents/guides/setup-and-development.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,43 @@ pnpm test --watch
158158
- [high-level/user-flow-and-product-behavior.md](../high-level/user-flow-and-product-behavior.md)
159159
- [low-level/mobile-app-internals.md](../low-level/mobile-app-internals.md)
160160

161+
### Wear OS Companion on Local Emulator
162+
163+
Use this flow when working on the native watch companion under `apps/mobile/android/wear`.
164+
165+
1. In Android Studio `SDK Manager`, install a Wear OS system image.
166+
2. In Android Studio `Device Manager`, create and start a Wear OS virtual device.
167+
3. Build the watch debug APK from the Android project root:
168+
169+
```bash
170+
cd apps/mobile/android
171+
172+
# macOS/Linux
173+
./gradlew :wear:assembleDebug
174+
175+
# Windows PowerShell
176+
.\gradlew.bat :wear:assembleDebug
177+
```
178+
179+
4. Install to the Wear emulator (use the watch serial from `adb devices`):
180+
181+
```bash
182+
adb devices
183+
adb -s <wear-emulator-serial> install -r wear/build/outputs/apk/debug/wear-debug.apk
184+
```
185+
186+
5. Launch the watch app:
187+
188+
```bash
189+
adb -s <wear-emulator-serial> shell am start -n com.lallimaven.eclipsetimer.wear/com.lallimaven.eclipsetimer.wear.MainActivity
190+
```
191+
192+
6. Optional phone/watch bridge check:
193+
- Start an Android phone emulator.
194+
- Run the phone app: `pnpm -C apps/mobile android`
195+
- Pair phone + watch emulators in Android Studio Device Manager.
196+
- Re-open the watch app and confirm it changes from "Sent test message. Waiting for phone..." to a "Phone reply: ..." status.
197+
161198
### Engine Developer
162199

163200
```bash

0 commit comments

Comments
 (0)