ADB - Install/uninstall, pull/push 명령
1. install 명령어
install: 연결된 안드로이드 장치에, 원하는 애플리케이션을 설치할 수 있는 명령어. (확장자는 apk로)
형식: adb install (절대)경로 / 애플리케이션.apk
여기서 -d 옵션은 현재 설치된 앱의 버전보다 낮은 버전의 앱을 설치할 수 있는 옵션으로 기존에 설치된 해당 앱보다 현재 install 하려는 코드의 버전이 더 낮아서(sdk를 낮춤) 생긴 오류를 수정하기 위해 추가했습니다.
옵션 | 설명 |
-r | 기존 앱을 재설치 |
-t | 테스트 중인 앱 설치 가능(원래 보안상 불가능) |
-d | 현재 설치된 앱의 버전보다 낮은 버전의 앱을 설치 |
-p | 앱의 전체가 아닌 일부만 설치 (앱의 기능을 나눠서 따로 설치할 때) |
-g | 앱이 필요로 하는 모든 권한을 자동으로 허용 (카메라 등의 권한) |
만약 아래와 같은 오류가 발생했다면? : Failure [-26: Package com.android.insecurebankv2 new target SDK 22 doesn't support runtime permissions but the old target SDK 26 does.
오류 원인)
stackoverflow 에서 확인해보니,
targetSdkVersion >= 23으로 앱을 설치한 다음 targetSdkVersion < 23으로 다시 설치하려고 하면 발생하는 오류
해결 방법)
패키지를 한 번 삭제해준 뒤 다시 설치
1) adb uninstall 패키지명
2) adb install (절대)경로/애플리케이션.apk // 다시 설치
2. unstall 명령어
uninstall: 설치한 애플리케이션을 삭제할 수 있는 명령어.
형식: adb unstall 패키지명
옵션 | 설명 |
-k | 데이터 유지한 채 애플리케이션만 삭제 |
2.1 패키지명 찾기
애플리케이션 삭제를 위한 uninstall 명령어는 '정확한 패키지명'이 필요하다. 그러기 위해 shell > pm(package manage) 명령어를 통해 확인할 수 있다.
- pm list packages:
- pm: 안드로이드 디바이스에서 설치된 앱들을 관리하는 도구
- list packages: 디바이스에 설치된 모든 패키지(앱)를 나열하는 명령어
- -f:
- -f: 패키지(앱)의 설치 경로를 함께 출력
- | grep bank:
- grep: 주어진 문자열(bank)을 포함하는 라인만 출력하는 리눅스 명령어 -> bank를 필터링.
3. push 명령어
push: PC에 저장된 파일을 연결된 장치에 복사.
형식: adb push 파일 저장위치 / 장치 저장위치
C:\Desktop\secret_message.txt 파일을 연결된 디바이스의 /sdcard/Download 경로에 복사했고, Device Explorer에서 해당 경로를 확인해봤을 때 같은 내용의 secret_message.txt가 생성된 것을 확인할 수 있었다.
4. pull 명령어
pull: 연결된 장치에 저장된 파일을 PC로 복사.
형식: adb pull 장치경로 파일 저장위치
pull 명령어를 통해 연결된 디바이스 경로의 파일을 내 PC에서 확인할 수 있었다.
(massage는 오타인데 다시 캡쳐 뜨기 귀찮아서 놔두었습니다.)