# external_updater developer documentation The documentation on this page is for developers of `external_updater`. If you're looking for user documentation, see the [README.md]. ## Development environment Development of `external_updater` requires a full checkout of the main branch of AOSP, and a lunched target (any target). See [Get started with Android Development] for a guide on setting up an AOSP build environment. Note: This project uses Python 3.11. You may find [pyenv] helpful for installing and managing multiple versions of Python. Not all the Python tools used here are available in AOSP. For managing those, we recommend using Poetry. To install the necessary Python dependencies: ```bash $ poetry install ``` [README.md]: ../README.md [pyenv]: https://github.com/pyenv/pyenv [Get started with Android Development]: https://source.android.com/docs/setup ## Development tasks The easiest way to activate the virtual environment is to create a nested shell with: ```bash $ poetry shell ``` `poetry shell` will activate the virtual environment by creating a nested shell. To deactivate this virtual environment simply use `deactivate` or `exit`. If you prefer not to use `poetry shell`, you must prefix all Python commands with `poetry run`, e.g. `poetry run pytest`. It's easier to just use `poetry shell`. Run the type checker and linter with `make lint`. Run the tests with `make test`. Run all of the above with `make check` or just `make`.