Coming from browser automation using https://github.com/segmentio/nightmare and an obvious DOM to interface with, I'm not sure how this might work on a real android device, or what tools are available. I do have an understanding of modern android and java development.
In this case, the goal would be to automate opening an arbitrary app already installed on the phone and without source code access, move a cursor or simulate touch events in specific areas, send keys to focused form fields, and ideally waiting for async events—like file upload—to finish.