def adb_push(src: str, dst: str, android_target: str, clean: bool = False):
    """Push a file or directory to the target Android device.

    src: The source file or directory
    dst: The destination directory
    android_target: The target Android device
    clean: Whether to clean the destination directory before pushing
    """
    # check if src exists
    if not Path(src).exists():
        raise FileNotFoundError(f"Path {src} does not exist")

    # clean dst before push
    if clean:
        run_adb_command(f"rm -rf {Path(dst).as_posix()}", android_target, shell_cmd=True)

    # create dst
    run_adb_command(f"mkdir -p {Path(dst).as_posix()}", android_target, shell_cmd=True)

    # push src to dst
    src_path = Path(src).resolve()
    if src_path.is_dir():
        run_adb_command(f"push {src_path.as_posix()}/. {dst}", android_target)
    elif src_path.is_file():
        run_adb_command(f"push {src_path.as_posix()} {dst}", android_target)
Push a file or directory to the target Android device.

    src: The source file or directory
    dst: The destination directory
    android_target: The target Android device
    clean: Whether to clean the destination directory before pushing
    
olive/platform_sdk/qualcomm/snpe/utils/adb.py