What problem does it solve? Moving test artifacts (screenshots, databases, JSON) between an Android device and a CI host fails in confusing ways: adb pull on /data/data/<pkg>/ returns "Permission denied", binary files get corrupted by PTY translation, and scoped storage on API 30+ changes which paths are writable. This Skill provides the exact path-permission rules and command patterns to make artifact transfer work reliably. ## Core Features & Use Cases - Path permission rules: A definitive table covering /data/local/tmp/, /sdcard/, /data/data/<pkg>/ (run-as only), and /sdcard/Android/data/<pkg>/files/ so you know which paths are pullable before writing CI scripts. - Binary-safe extraction: Uses adb exec-out run-as <pkg> cat and tar cf - | tar xf - pipelines to pull databases and directories without CRLF corruption. - Modern transfer flags: Covers -z brotli/lz4/zstd compression, --sync incremental pushes, and -a attribute preservation from platform-tools 30+. - TestStorage API: Wires androidx.test:services with useTestStorageService so per-test artifacts land automatically in Gradle's connected_android_test_additional_output/ directory. - Use Case: A screenshot-on-failure rule writes PNGs via Context.getExternalFilesDir(), and the CI script pulls them from /sdcard/Android/data/<pkg>/files/ without run-as, even on Android 11+. ## Quick Start Ask the assistant to pull a SQLite database from a debuggable app's private data directory using run-as and exec-out without corrupting the binary.