Skip to content

[Feature][Android] Add typed Lynx thread strategy - #122

Open
Huxpro wants to merge 1 commit into
tiktok:agent/android-shared-densityfrom
Huxpro:agent/android-thread-strategy
Open

[Feature][Android] Add typed Lynx thread strategy#122
Huxpro wants to merge 1 commit into
tiktok:agent/android-shared-densityfrom
Huxpro:agent/android-thread-strategy

Conversation

@Huxpro

@Huxpro Huxpro commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

Add typed Android Lynx rendering-thread strategy configuration with a global default and per-container override.

This is the fourth layer of the Android compatibility stack and depends on #121.

Changes

  • Add Sparkling-owned mappings for all supported Lynx rendering strategies.
  • Add a global default in SparklingLynxConfig and per-page override in SparklingContext.
  • Apply page > global > Lynx default precedence before view construction.
  • Preserve builder encapsulation and add focused unit/docs coverage.

How to test

  • Focused SDK tests for enum mapping, precedence, default behavior, and construction timing.
  • Kotlin lint 1.8.0.
  • Cloud-device first-screen verification will be attached before completion.

Stack

#119 -> #120 -> #121 -> this PR

Checklist

  • I read CONTRIBUTING.md.
  • I ran relevant checks.
  • I updated docs and tests.

Device validation complete

The durable SG1 + Lynx Sandbox acceptance matrix is now available in #131. Exact validated commit: 8a2b3ea99eaa342e2f1ebfe716aefbb44f411fbb. On a fresh aries_10 device (Android 10 / API 29), all 9 tests passed, including real first-screen rendering, fixed 320x480, shared density 3.25 across two independent Lynx views, PART_ON_LAYOUT, typed template fetch invocation, orientation, retry recovery, and unsafe configuration rejection. The runner dynamically leases/releases the device and archives logs/screenshots/hashes. Evidence archive on SG1: /tmp/sparkling-android-device-acceptance-8a2b3ea.tar.gz (SHA-256 09acd64b4b63988b61e7f4f2ff11f3f7b4b4770bd3ef74a973db6dda0c9e242c).

Expanded durable device validation

The checked-in SG1 + Lynx Sandbox matrix in #131 now validates exact commit df875a87541d587ab8aa84a86600c0610f9e44c7 with 10/10 PASS on aries_10 (Android 10 / API 29). Added runtime coverage includes: the pre-load listener observing a ready bridge before template fetch; the global per-page fetcher factory; real first-screen rendering for ALL_ON_UI, MOST_ON_TASM, PART_ON_LAYOUT, and safe MULTI_THREADS; and full-page fixed-viewport + MULTI_THREADS rejection before Activity launch or transfer-station save. The runner requires a clean exact HEAD and fails closed unless Sandbox release confirms the leased serial. Evidence: /tmp/sparkling-android-device-acceptance-df875a8; archive SHA-256 712a3b83dbd78eabeae9afc0766b5b191cee0bff10e515967b3ae9f46c4feb98.

Summary of change:
- Add Sparkling-owned thread strategy values for the supported Lynx modes.
- Support a global default with a per-container override.
- Apply page configuration before view construction without exposing the builder.
- Preserve the Lynx default when neither configuration is present.

TEST: ./gradlew :sparkling:testDebugUnitTest --tests com.tiktok.sparkling.SparklingThreadStrategyTest --tests com.tiktok.sparkling.hybridkit.lynx.HybridLynxKitThreadStrategyTest --tests com.tiktok.sparkling.hybridkit.config.HybridConfigTest --tests com.tiktok.sparkling.hybridkit.HybridKitTest --no-daemon
TEST: PATH=/tmp/sparkling-ktlint-bin:$PATH scripts/lint.sh kotlin

Co-authored-by: TRAE CLI <noreply@bytedance.com>
@Huxpro
Huxpro requested a review from YJ-Hao August 11, 2026 10:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant