확정되지 않은 기능의 Test를 위해 apk를 추출할 일이 생겨 Android 기기에
설치된 프로그램의 apk 파일을 얻고자 adb를 통해 apk를 추출해보았다.
ADB
ADB(Android Debug Bridge)는 Unix shell을 제공. 사용자는 emulator나 안드로이드 연결장비에 다양한 명령어를 보낼 수 있다.
Android 기기와 PC를 연결한 후 (Android Studio에서 진행)
APK 추출
1. ADB Shell 실행
adb shell
간혹 가다 아래처럼 device unauthorized.라는 오류가 뜨는데 USB 디버깅 허용을 하지 않아서 뜬다고 한다.
2. su 명령어 실행 (필수 아님)
su
루팅 된 폰에서 adb 쉘에 진입했다면 해주어야 한다는데 su 명령으로 SuperUser 권한을 얻는다고 한다.
3. 설치된 프로그램의 목록을 얻어 온다.
pm list packages -f
명령어를 실행하면 설치된 패키지의 목록을 보여 준다. 원하는 패키지를 외워두거나 복사한 후
4. adb shell 종료
exit
5. 자신이 원하는 패키지를 선택해서 아래와 같이 입력
adb pull (원하는 패키지) (추출한 apk 이름 지정)
(임시 케이뱅크 추출)
adb pull /data/app/~~U98PR2wp2cxLvWUwXo1ivQ==/com.kbankwith.smartbank-kYJamlNBCdSz8cSd3OdAGw==/base.apk test.apk
특별한 오류 메시지 없이 성공을 하면 프로젝트 내 폴더에 지정해준 추출 APK 이름으로 APK 파일이 생긴다.
추가사항 - 패키지 검색해서 출력
pm list packages -f|grep "검색어"
패키지가 너무 많아 원하는 패키지를 찾고자 할 때 "검색어"가 포함된 package만 찾아서 출력해준다.
APK 설치
1. ADB Version 및 위치 확인
adb --version
2. Android 기기와 연결 확인
adb devices -l
만약 정보가 나오지 않는다면 케이블이 문제이거나(혹은 데이터 케이블이 아닌 경우), 안드로이드 기기에서 개발자 옵션을 통해서 USB 디버깅 설정을 활성화 처리해줘야 한다.
3. APK 파일 설치
adb install -r -t (설치 apk 파일 이름)
-r 옵션은 재설치의 의미로 기존에 동일한 앱(App)이 설치되어있다면 삭제 후 재설치 되고, 기존에 동일하게 설치된 앱(App)이 없어도 문제없이 설치된다.
-t 옵션은 테스트 APK를 설치하도록 허용하는 옵션이다.
ADB 명령어 정리
1. Android 버전 확인
adb shell getprop ro.build.version.release
2. SDK 버전 확인
adb shell getprop ro.build.version.sdk
3. Android Setting 열기
adb shell am start -n com.android.settings/com.android.settings.Settings
4. APK 설치
adb install [FileName].apk
adb install -r [FileName].apk : 설치된 어플을 재설치(단 데이터 삭제는 불가)
adb install -s [FileName].apk : 메모리 카드에 설치
5. APK 제거
adb unintall [패키지명]
6. 장치 모델명 확인
adb shell getprop ro.product.model
7. 화면 해상도 확인
adb shell dupsys window | grep DisplayWidth
8. App data 삭제
adb shell pm clear 패키지명
9. Screenshot 저장
adb shell /system/bin/screencap -p 장치내경로
10. 연결된 장비 및 에뮬레이터 확인
adb devices
11. 장치 재부팅
adb reboot
12. adb 종료
adb kill-sever
13. adb 실행
adb start-server
14. 장치의 파일 가져오기
adb pull 장치내경로 PC내경로
15. 장치로 파일 복사하기
adb push PC내경로 장치내경로
16. root 권한으로 접근
adb root
17. root 권한 해제
adb unroot
18. 장치 작동 시간 확인
adb uptime
19. adb shell 실행
adb shell
20. adb 도움말
adb -h
21. 2개 이상일 때 특정 기기로만 명령어 보내야 할 때
adb shell -s [Serial Number] 명령어
22. 패키지 명을 이용하여 구동 중인 앱 강제 종료
adb shell am force-stop [packagename]
23. 안드로이드 장비에 설치된 모든 앱의 패키지명 목록
adb shell pm list packages -f
ADB
http://www.wearedev.net/113?PHPSESSID=14ee849c617ff640b68ccd1e53ae5237
https://superfelix.tistory.com/89
'Develop' 카테고리의 다른 글
Architecture Pattern MVC, MVP, MVVM, MVI (0) | 2023.12.02 |
---|---|
MVVM (Model, View, ViewModel) (0) | 2022.01.27 |