Skip to content

Commit ae59f6c

Browse files
committed
[green] Isolate Android WebView CI from GMS
Signed-off-by: Viwat Vchirawongkwin <viwat.v@chula.ac.th>
1 parent b8256a9 commit ae59f6c

2 files changed

Lines changed: 38 additions & 13 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# - docs : every repository-local Markdown target exists.
1919
# - firmware-host : shell gates plus the complete Python host/release suite.
2020
# - android-webview : real Blockly platform-WebView integration on a clean,
21-
# pinned Android 14 / API 34 Google APIs x86_64 AVD.
21+
# pinned Android 14 / API 34 AOSP x86_64 AVD.
2222
# - build : cross-compile the empty agent for esp32 / esp32-s3 / esp32-c3
2323
# (BLD-3/4/5) — the REAL toolchain job (installs ESP-IDF + submodule).
2424
name: ci
@@ -226,11 +226,11 @@ jobs:
226226
run:
227227
working-directory: app
228228
env:
229-
PYBLE_ANDROID_IMAGE: system-images;android-34;google_apis;x86_64
229+
PYBLE_ANDROID_IMAGE: system-images;android-34;default;x86_64
230230
PYBLE_ANDROID_COMPILE_PLATFORM: platforms;android-36
231231
PYBLE_ANDROID_BUILD_TOOLS: build-tools;36.0.0
232232
PYBLE_ANDROID_NDK: ndk;28.2.13676358
233-
PYBLE_ANDROID_AVD: pyble_api34_google_apis
233+
PYBLE_ANDROID_AVD: pyble_api34_aosp
234234
PYBLE_ANDROID_SERIAL: emulator-5554
235235
PYBLE_ANDROID_LOG_DIR: /tmp/pyble-android-integration
236236
PYBLE_ANDROID_RAW_EMULATOR_LOG: /tmp/pyble-android-emulator.log
@@ -347,7 +347,7 @@ jobs:
347347
"ANDROID_NDK_PATH=$ANDROID_NDK_PATH" \
348348
"ANDROID_NDK_LATEST_HOME=$ANDROID_NDK_LATEST_HOME" \
349349
>> "$GITHUB_ENV"
350-
- name: Create API 34 Google APIs x86_64 tablet AVD
350+
- name: Create API 34 AOSP x86_64 tablet AVD
351351
shell: bash
352352
run: |
353353
set -euo pipefail
@@ -369,8 +369,8 @@ jobs:
369369
# avdmanager pre-populates these keys. Upsert them so the emulator
370370
# cannot select an earlier device-profile value from a duplicate.
371371
python3 ../tools/ci/android_avd_config.py "$AVD_CONFIG" \
372-
--set 'hw.ramSize=2048' \
373-
--set 'hw.cpu.ncore=2' \
372+
--set 'hw.ramSize=4096' \
373+
--set 'hw.cpu.ncore=4' \
374374
--set 'vm.heapSize=384' \
375375
--set 'disk.dataPartition.size=6144M' \
376376
--set 'hw.lcd.width=2560' \
@@ -425,8 +425,8 @@ jobs:
425425
-camera-front none \
426426
-accel on \
427427
-gpu swiftshader_indirect \
428-
-memory 2048 \
429-
-cores 2 \
428+
-memory 4096 \
429+
-cores 4 \
430430
>"$PYBLE_ANDROID_RAW_EMULATOR_LOG" 2>&1 &
431431
EMULATOR_PID=$!
432432
printf '%s\n' "$EMULATOR_PID" \
@@ -524,10 +524,35 @@ jobs:
524524
exit 1
525525
fi
526526
527-
# A cold Google APIs image keeps dispatching setup broadcasts after
528-
# sys.boot_completed. Let them settle before the prebuilt app is
529-
# installed, so driver attachment cannot race an Activity relaunch.
527+
# Let the cold AOSP image settle before the prebuilt app is installed,
528+
# so driver attachment cannot race an Activity relaunch.
530529
sleep 20
530+
531+
GMS_PACKAGES="$(
532+
"$PYBLE_ANDROID_ADB" -s "$PYBLE_ANDROID_SERIAL" shell \
533+
pm list packages com.google.android.gms 2>/dev/null \
534+
| tr -d '\r' || true
535+
)"
536+
if [ -n "$GMS_PACKAGES" ]; then
537+
echo "The Android integration image unexpectedly contains GMS:" >&2
538+
printf '%s\n' "$GMS_PACKAGES" >&2
539+
exit 1
540+
fi
541+
542+
"$PYBLE_ANDROID_ADB" -s "$PYBLE_ANDROID_SERIAL" shell \
543+
dumpsys webviewupdate \
544+
>"$PYBLE_ANDROID_LOG_DIR/webview-provider.txt"
545+
WEBVIEW_LINE="$(
546+
grep -F \
547+
'Current WebView package (name, version): (com.android.webview,' \
548+
"$PYBLE_ANDROID_LOG_DIR/webview-provider.txt" || true
549+
)"
550+
if [ -z "$WEBVIEW_LINE" ]; then
551+
echo "The AOSP WebView provider is not current:" >&2
552+
cat "$PYBLE_ANDROID_LOG_DIR/webview-provider.txt" >&2
553+
exit 1
554+
fi
555+
printf '%s\n' "$WEBVIEW_LINE"
531556
"$PYBLE_ANDROID_ADB" -s "$PYBLE_ANDROID_SERIAL" logcat -c
532557
- name: Real About + Blockly integration (Android API 34)
533558
shell: bash
@@ -561,7 +586,7 @@ jobs:
561586
echo "Installed Android package revisions:"
562587
for PROPERTIES in \
563588
"$PYBLE_ANDROID_SDK_ROOT/emulator/source.properties" \
564-
"$PYBLE_ANDROID_SDK_ROOT/system-images/android-34/google_apis/x86_64/source.properties"
589+
"$PYBLE_ANDROID_SDK_ROOT/system-images/android-34/default/x86_64/source.properties"
565590
do
566591
if [ -f "$PROPERTIES" ]; then
567592
echo "[$PROPERTIES]"

‎tests/publication/test_ci_contract.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ def test_android_integration_uses_full_aosp_without_gms(self) -> None:
319319
android,
320320
)
321321
self.assertIn(
322-
"Current WebView package (name, version):",
322+
"Current WebView package (name, version): (com.android.webview,",
323323
android,
324324
)
325325

0 commit comments

Comments
 (0)