---
name: android_pull
kind: function
lang: bash
domain: infra
version: "1.0.0"
purity: impure
signature: "android_pull [--serial <S>] remote_path local_path"
description: "Pull file/dir from Android device to WSL via adb pull."
tags: [android, adb, pull, file, transfer, pendiente-usar]
uses_functions: [adb_wsl_bash_infra]
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
  - name: "--serial <S>"
    desc: "Optional target device serial. If omitted, adb_pick_serial auto-detects the connected device."
  - name: "remote_path"
    desc: "Source path on the Android device (e.g. /sdcard/Pictures/foo.png)."
  - name: "local_path"
    desc: "Destination path in the WSL filesystem. Parent directories are created automatically."
output: "Stdout 'pulled: <remote> → <local> from <serial>'."
tested: false
tests: []
test_file_path: ""
file_path: "bash/functions/infra/android_pull.sh"
---

## Ejemplo

```bash
# Pull a single file (auto-detect device)
android_pull /sdcard/Pictures/foo.png ~/Downloads/foo.png

# Pull a directory to a specific local path with explicit serial
android_pull --serial emulator-5554 /sdcard/DCIM ~/Downloads/DCIM
```

## Notas

Sources `adb_wsl.sh` for `adb_pick_serial`, `ADB_PICK_REST`, `adb_wsl_to_win`, and `adb_s`.
The local path is converted to a Windows path via `adb_wsl_to_win` before passing to `adb pull`,
which is required because `adb.exe` (Windows binary) does not understand WSL paths.
Exit code 3 when no device serial can be resolved.
