From 3e50888527ef9f29b9157ecd537e408008bb1c85 Mon Sep 17 00:00:00 2001 From: Daniel Kenji Toyama Date: Fri, 10 Jul 2026 07:43:21 -0700 Subject: [PATCH] Consolidate port picking in AndroidEnv loaders. Update AndroidWorld to adapt to the new configuration fields while maintaining backward compatibility with older AndroidEnv releases. PiperOrigin-RevId: 945707463 --- android_world/env/android_world_controller.py | 14 +++++++++----- android_world/env/env_launcher_test.py | 12 +++++++++--- setup.py | 8 ++++---- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/android_world/env/android_world_controller.py b/android_world/env/android_world_controller.py index 2f313306..dda5352a 100644 --- a/android_world/env/android_world_controller.py +++ b/android_world/env/android_world_controller.py @@ -311,16 +311,20 @@ def get_controller( ) -> AndroidWorldController: """Creates a controller by connecting to an existing Android environment.""" + emulator_launcher = config_classes.EmulatorLauncherConfig( + emulator_console_port=console_port, + adb_port=console_port + 1, + grpc_port=grpc_port, + ) + if hasattr(emulator_launcher, 'connect_to_existing'): + setattr(emulator_launcher, 'connect_to_existing', True) + config = config_classes.AndroidEnvConfig( task=config_classes.FilesystemTaskConfig( path=_write_default_task_proto() ), simulator=config_classes.EmulatorConfig( - emulator_launcher=config_classes.EmulatorLauncherConfig( - emulator_console_port=console_port, - adb_port=console_port + 1, - grpc_port=grpc_port, - ), + emulator_launcher=emulator_launcher, adb_controller=config_classes.AdbControllerConfig(adb_path=adb_path), ), ) diff --git a/android_world/env/env_launcher_test.py b/android_world/env/env_launcher_test.py index 8bd5ee7f..d9058bbf 100644 --- a/android_world/env/env_launcher_test.py +++ b/android_world/env/env_launcher_test.py @@ -41,15 +41,21 @@ def test_get_env( env_launcher._get_env(5556, "some_adb_path", 8554) + expected_launcher_config = config_classes.EmulatorLauncherConfig( + emulator_console_port=5556, + adb_port=5557, + grpc_port=8554, + ) + if hasattr(expected_launcher_config, "connect_to_existing"): + setattr(expected_launcher_config, "connect_to_existing", True) + mock_loader.assert_called_with( config=config_classes.AndroidEnvConfig( task=config_classes.FilesystemTaskConfig( path=android_world_controller._TASK_PATH ), simulator=config_classes.EmulatorConfig( - emulator_launcher=config_classes.EmulatorLauncherConfig( - emulator_console_port=5556, adb_port=5557, grpc_port=8554 - ), + emulator_launcher=expected_launcher_config, adb_controller=config_classes.AdbControllerConfig( adb_path="some_adb_path" ), diff --git a/setup.py b/setup.py index 209ea6f4..34426ae4 100644 --- a/setup.py +++ b/setup.py @@ -14,9 +14,9 @@ """Setup file for AndroidWorld.""" +import importlib.resources import os -import pkg_resources import setuptools from setuptools.command import build_py @@ -42,10 +42,10 @@ def finalize_options(self): def run(self): # Import grpc_tools here, after setuptools has installed setup_requires # dependencies. - from grpc_tools import protoc # pylint: disable=g-import-not-at-top + from grpc_tools import protoc # pylint: disable=g-import-not-at-top # pytype: disable=import-error - grpc_protos_include = pkg_resources.resource_filename( - 'grpc_tools', '_proto' + grpc_protos_include = str( + importlib.resources.files('grpc_tools').joinpath('_proto') ) for proto_path in _PACKAGE_PROTOS: