fix(android): select available emulator port and improve emulator detection #399
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fix emulator port selection by choosing an available even port instead of hardcoding
5554, and improve emulator detection heuristics so devices reported ashardwarebyadbare correctly recognized as emulators. Add unit tests covering detection and port selection/fallback.What this does
findAvailableEmulatorPort(devices)— scans the provideddeviceslist and returns the first free even port in the range5554–5584. Falls back to5554if none available.isLikelyEmulator(device)— heuristic detection using:serial(e.g.emulator-5554)type === 'emulator'properties.device(starts withemuor containsgeneric)properties.product(containssdk_gphoneorgoogle_sdk)model(containsandroid_sdkorsdk_gphone)selectDeviceByTargetto:isLikelyEmulator(...)to build emulator listfindAvailableEmulatorPort(...)when launching viarunEmulatorWhy
5554caused failures when that port was already in use.type: 'hardware'byadb; improved heuristics prevent misclassification and make AVD selection more robust.