Metadata-Version: 2.1
Name: adbPullAs
Version: 2.0.0
Summary: adb pull wrapper to pull package private files from Android device
Home-page: https://github.com/ViliusSutkus89/adbPullAs/
Author: Vilius Sutkus '89
Author-email: ViliusSutkus89@gmail.com
License: GPLv3
Project-URL: Tracker, https://github.com/ViliusSutkus89/adbPullAs/issues
Keywords: adb pull run-as
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Operating System :: Android
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE

# adbPullAs

[![test](https://github.com/ViliusSutkus89/adbPullAs/actions/workflows/test.yml/badge.svg)](https://github.com/ViliusSutkus89/adbPullAs/actions/workflows/test.yml)
[![adbPullAs on PyPI](https://badge.fury.io/py/adbPullAs.svg)](https://pypi.org/project/adbPullAs/)

adb pull wrapper to pull package private files from Android device.

WORKS ONLY ON DEBUG APPLICATIONS.

### Problem Scope

Developers and testers need to access data from `/data/data/com.viliussutkus89.adb.pull.as/cache`.

`adb pull /data/data/.../cache` is no go, because the directory is private.

`adb run-as com.viliussutkus89.adb.pull.as cp /data/data/com.viliussutkus89.adb.pull.as/cache /data/local/tmp` is no go, because `/data/local/tmp` may require storage permissions.

`adb su -c cp /data/data/.../cache /data/local/tmp` is no go, because it requires root.

### Solution

Recursive wrapper around adb.

Listing directories and reading files while using runtime permissions of specified application.

Piping contents into `/data/local/tmp` using normal adb user permissions and `adb pull`'ing into host computer.

### Install

adbPullAs is available on [PyPI](https://test.pypi.org/project/adbPullAs/)
```shell
python -m pip install adbPullAs
```

### Usage

adbPullAs is used as follows:
`adbPullAs PACKAGE_NAME ANDROID_SOURCE... COMPUTER_DESTINATION_DIR`.

`COMPUTER_DESTINATION_DIR` can be omitted to pull into current working directory,
	but only with a single supplied `ANDROID_SOURCE` (example 1).

Multiple `ANDROID_SOURCE`s require `COMPUTER_DESTINATION_DIR` to be supplied (example 2).

###### Example 1
```
adbPullAs com.viliussutkus89.application /data/data/com.viliussutkus89.application/databases/androidx.work.workdb
```
###### Example 2
```
adbPullAs com.viliussutkus89.application /data/data/com.viliussutkus89.application/cache /data/data/com.viliussutkus89.application/files ./pulled_from_device
```
