APK 재설치 스크립트

빌드 된 APK만 재설치 하고 싶을 때가 있다. 예를들어 Android Studio로 빌드(run)도중 단말과의 연결이 끊어지거나 APK의 업스트리밍이 실패하는 경우다. 물론 run을 다시 눌러 빌드를 새로 시작하고 APK를 설치할 수도 있지만, 경우에 따라 빌드에 최소 수분이상의 시간이 소요될 수 있기 때문에 빌드 된 APK를 재설치하는편이 낫다.

일반적으로 APK설치를 위해 adb install $apk경로  명령어를 사용하는데, 매번 경로를 지정하는 것이 어렵고, DFM까지 사용하면 명령어가 굉장히 길어지게 된다.

예) adb install-multiple -r -t ./app/build/outputs/apk/debug/app-debug.apk ./dfm1/build/outputs/apk/debug/dfm1-debug.apk ./dfm2/build/outputs/apk/debug/dfm2-debug.apk ./dfm3/build/outputs/apk/debug/dfm3-debug.apk 

심지어 adb에 다중 디바이스가 물려있으면, adb -s 옵션까지 써넣어야 하는데 디바이스 ID를 매번 입력하는 것도 힘들었다. 그래서 스크립트를 만들게 되었다. (for macOS only)

 

스크립트 설정 

기본적인 내용은 소스 내 주석으로 확인할 수 있다.

  • 스크립트를 안드로이드 스튜디오 프로젝트 최상위에 위치한다.
  • base_apk변수에 app모듈을 빌드 했을 때 생성되는 APK경로를 작성한다.
  • DFM들을 사용한다면 마찬가지로 모듈 갯수만큼 변수를 선언하자
  • 최종적으로 모든 APK변수들을 apks 배열에 선언한다.
  • 58번째 라인에 패키지명과 시작할 Activity의 Canonical name을 적자.

스크립트 실행 방법

Android Studio의 terminal 탭에서 다음과 같이 스크립트를 실행 한다. 
예)> ./reinstall.sh

기본적으로 스크립트를 실행하면 대화형으로 실행되지만, 그것도 귀찮다면 미리 매개변수(옵션)을 전달할 수도 있다.

만약 APK를 ADB에 연결된 모든 디바이스에 설치하길 원한다면 다음과 같이 명령어를 입력한다.

예)> ./reinstall.sh 0

마치며

프로젝트내의 단일 모듈앱의 경우 프로젝트 경로로부터 APK를 탐색하여 별도 스크립트 설정없이 동작하도록 할수도 있으나 DFM을 사용하는 케이스의 경우에는 이 부분의 설정이 까다로워서 APK경로를 하드코딩하는 것으로 마무리 했습니다. APK를 재설치 하는 더 나은 방법이 있다면 댓글에 남겨주세요. 감사합니다.

카테고리: etc

0개의 댓글

답글 남기기

Avatar placeholder

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.