
AutoDroid를 개발하기 위해 개발 환경을 구축해뒀으니 이제 간단하게 AutoDroid를 실행해보자!
$ git clone git@github.com:MobileLLM/AutoDroid.git
$ cd AutoDroid/
$ pip install -e .
GPT API Key 발급 방법 : 이 사이트 참고하기
GPT API Key 등록 방법
tool.py 에서 os.environ['GPT_URL'] 에 발급받은 GPT API Key 복붙하기
간단하게 테스트해볼 예정이라, AutoDroid github에서 제공하는 APK file을 사용했다.
apks 폴더를 AutoDroid 폴더 안으로 옮기기Camer 앱 실행해보기
$ droidbot -a /Users/sophia/skt/AutoDroid/apk/com.naver.labs.translator_102_apps.evozi.com.apk/Users/sophia/skt/AutoDroid/apks/com.simplemobiletools.camera_5.6.3-86_minAPI29.apk -o camera -task 'take a selfie' -keep_env -keep_app
- -a < apk file 경로>
- -o < app name >
- -task < '실행하고자하는 task 입력' >

Calendar 앱 실행해보기
$ droidbot -a /Users/sophia/skt/AutoDroid/apks/com.simplemobiletools.calendar_3.4.2-118_minAPI16.apk -o calendar -task 'create a new event, the task is "skt ai fellowship meeting", save it' -keep_env -keep_app

Papago 앱 실행해보기
$ droidbot -a /Users/sophia/skt/AutoDroid/apk/com.naver.labs.translator_102_apps.evozi.com.apk -o Papago -task 'Open the app' -keep_env -keep_app
DroidBot 실험 결과
DroidBot 실험한 결과들은 노션 페이지에 정리해두었다.
(앞으로 계속 업데이트 할 예정! 🤓)
The current implementation is not good at determining task completion.
= Task 성공률이 낮다.
The task automation performance may be unstable due to the randomness of LLMs, the style/quality of app GUI and task descriptions, etc.
= LLM, app GUI의 style/quality, task description에 따라 task automation performance가 달라진다 (Robust하지 않다.)
= 이 3가지에 따라 영향을 받는 것 같다
It requires connecting to a host machine via adb, instead of a standalone on-device solution.
= DroidBot이 ADB에 연결된 디바이스를 이용함
AutoDroid에서 제공한 APK file을 실행할 때, android 기본 앱과 같은 기능의 앱을 새로 만들어서 실행함
- 논문을 읽었을 때는 DroidBot이 app instruction도 필요 없고, 암호화된 앱에도 접근할 수 있는 이유가 앱 내에 있는 정보를 code로 이해하는게 아니라, UI Screenshot을 녹화해서 GUI information을 이해하기 때문이라고 생각했는데 APK file이 필요한 이유를 모르겠음
- 결국 APK file을 받아서 task를 실행해야한다면, DroidBot이 explore하면서 user task에 맞는 앱을 찾는게 아니라 apk file을 지정받아서 앱을 실행시키는거 아닌가?
- 아? DroidBot은 앱을 특정해야하고, 특정 앱 속에서 task를 실행시키기 위한 UTG를 구축하는 것까지만 하는건가?
- 그럼 AutoDroid는 DroidBot을 통해서 구축된 UI screenshot을 보고 UI information을 HTML 형식으로 바꿔서 LLM prompt가 task automation으로 이어지도록 만드는거네?
- 그럼 LLM prompt를 더 잘 이해할 수 있는 방법으로 개선하면 되나?
- Apk file은 앱을 실행하기 위한 모든 리소스를 담고 있으니까, 필요한가? 근데 UI screenshot으로 UTG를 구축해서 이해하면 Apk file이 필요한가? Apk file에 정확히 어떤 리소스가 있지?
- GUI information을 HTML 형식으로 바꿔서 prompt를 action으로 바꿀 때 사용하는걸로 보면, Apk file 안에 있는 리소스를 이용해서 실행시키는 것도 아닌데 왜 Apk file이 필요하지?
APK file (Android Package Kit)
안드로이드 운영 체제에 애플리케이션을 배포하고 설치하는데 사용되는 파일 형식
- 안드로이드 애플리케이션을 실행하는데 필요한 모든 리소스가 포함되어 있음
- APK file 구조 참고하기
Robust한 DroidBot 구축
- 현재는 Task, App에 따라 실행 여부가 많이 달라짐
(LLM, app GUI의 style/quality, task description도 영향을 주는 것 같음)- 어떤 앱에서 어떤 task를 실행하든 끝까지 완료할 수 있도록 robust한 DroidBot을 구축해야할 것 같음
Task Completion 확률 높이기
- 논문에 적혀있는 방법 외, Task Completion을 높일 수 있는 새로운 방법을 고안해야함
- (아이디어) Action prompt도 HTML 형식으로 전달하면 어떨지
On-Device DroidBot 구축
- DroidBot이 ADB에 연결된 디바이스를 이용하기 때문에, On-Device에서 DroidBot을 실행할 수 있는 방법이 필요함
앱의 APK file을 자동으로 가져오는 파이프라인 구축
- 현재는 실행하고자하는 App의 Apk file을 직접 생성해서 폴더 안에 넣어줘야함
- 사용자가 새로운 앱을 깔고 LAM을 실행할 때, Apk file을 사용자가 직접 생성해서 넣을 수는 없음
- Apk file에 대한 파이프라인을 구축하던지 아니면 Apk file 없이 UTG를 구축할 수 있는 방법을 찾아봐야할 것 같음