Android/ADB

ADB를 활용한 특정 앱 강제 종료 및 재시작

임베디드 친구 2025. 2. 28. 08:51
728x90
반응형

ADB를 활용한 특정 앱 강제 종료 및 재시작

Android Debug Bridge(ADB)는 개발자가 Android 기기를 원격으로 조작하고 디버깅할 수 있도록 도와주는 강력한 도구입니다. 이 글에서는 ADB를 활용하여 특정 앱을 강제 종료하고 다시 실행하는 방법에 대해 설명하겠습니다. 특히, adb shell am 명령어를 이용하여 애플리케이션을 제어하는 방법을 다루며, 각 명령어의 사용법과 예제를 함께 소개하겠습니다.


1. ADB란?

ADB(Android Debug Bridge)는 Android 기기와 PC를 연결하여 다양한 작업을 수행할 수 있도록 해주는 명령줄 도구입니다. ADB를 사용하면 애플리케이션 설치, 로그 확인, 기기 파일 시스템 접근, 특정 시스템 명령어 실행 등이 가능합니다.

ADB를 사용하려면 개발자 모드와 USB 디버깅이 활성화되어 있어야 합니다. 기본적인 ADB 설정 및 사용법에 대한 내용은 다음을 참고하세요.

# ADB 버전 확인
adb version

# 연결된 기기 목록 확인
adb devices

# ADB 셸 접속
adb shell

이제 ADB를 활용하여 특정 애플리케이션을 강제 종료하고 다시 실행하는 방법을 살펴보겠습니다.


2. 특정 앱 강제 종료

adb shell am force-stop <package_name>

앱을 강제로 종료하는 가장 간단한 방법은 am force-stop 명령어를 사용하는 것입니다. 이 명령어는 특정 애플리케이션을 즉시 중지시키며, 앱이 백그라운드에서 실행 중이라도 완전히 종료됩니다.

adb shell am force-stop com.example.app

위 명령어는 com.example.app 패키지의 애플리케이션을 강제 종료합니다. 이 명령을 실행하면 앱의 모든 프로세스가 종료되며, 백그라운드 서비스도 함께 중지됩니다.

사용 예시:

예를 들어, YouTube 앱(com.google.android.youtube)을 강제 종료하려면 다음과 같이 입력하면 됩니다.

adb shell am force-stop com.google.android.youtube

이 명령을 실행하면 YouTube 앱이 즉시 종료됩니다.


3. 특정 앱 실행

adb shell am start -n <package_name>/<activity_name>

강제 종료된 애플리케이션을 다시 실행하려면 am start 명령어를 사용할 수 있습니다. 이 명령은 특정 애플리케이션의 특정 액티비티(Activity)를 실행하는 역할을 합니다.

adb shell am start -n com.example.app/.MainActivity

위 명령어는 com.example.app 패키지의 MainActivity를 실행합니다. 이때, MainActivity는 앱의 메인 화면을 담당하는 액티비티(Activity)여야 합니다.

예제:

예를 들어, Chrome 브라우저를 실행하려면 다음 명령을 사용할 수 있습니다.

adb shell am start -n com.android.chrome/com.google.android.apps.chrome.Main

이 명령을 실행하면 Chrome 브라우저가 실행됩니다.


4. 앱 프로세스 종료

adb shell am kill <package_name>

앱을 강제 종료하는 또 다른 방법으로 am kill 명령어를 사용할 수 있습니다. 이 명령어는 지정된 애플리케이션의 프로세스를 종료하지만, force-stop과 달리 백그라운드 서비스까지 완전히 종료하지는 않습니다.

adb shell am kill com.example.app

차이점:

  • am force-stop → 앱의 모든 프로세스를 강제 종료하고 다시 실행하기 전까지는 자동 실행되지 않음
  • am kill → 앱의 메인 프로세스만 종료되며, 백그라운드 서비스는 계속 실행될 수 있음

예를 들어, WhatsApp의 프로세스를 종료하려면 다음 명령어를 사용할 수 있습니다.

adb shell am kill com.whatsapp

이 명령을 실행하면 WhatsApp의 프로세스가 종료되지만, 백그라운드에서 다시 실행될 가능성이 있습니다.


5. 시스템 UI 재시작

adb shell am restart

am restart 명령어는 전체 시스템 UI를 재시작하는 역할을 합니다. 이를 통해 상태 바, 네비게이션 바, 홈 화면 등의 UI를 새로고침할 수 있습니다.

adb shell am restart

이 명령어를 실행하면 Android 시스템 UI가 재시작되며, 일시적인 UI 오류가 해결될 수 있습니다. 다만, 이 명령은 기기 전체를 재부팅하는 것은 아니며, 시스템 UI 관련 프로세스만 재시작됩니다.

예제:

만약 상태 바(Status Bar)가 정상적으로 작동하지 않는다면, 다음과 같이 시스템 UI를 재시작해 볼 수 있습니다.

adb shell am restart

6. 실전 예제: 특정 앱 강제 종료 후 다시 실행하기

이제 앞에서 배운 명령어를 조합하여 특정 애플리케이션을 강제 종료한 후 다시 실행하는 스크립트를 만들어 보겠습니다.

# 앱 패키지 이름 정의
PACKAGE_NAME="com.example.app"
ACTIVITY_NAME=".MainActivity"

# 앱 강제 종료
adb shell am force-stop $PACKAGE_NAME
sleep 2  # 2초 대기

# 앱 실행
adb shell am start -n $PACKAGE_NAME/$ACTIVITY_NAME

위 스크립트는 com.example.app을 강제 종료한 후 2초 후에 다시 실행하는 명령어입니다. 필요에 따라 sleep 시간을 조절할 수 있습니다.


7. 결론

ADB를 활용하면 특정 애플리케이션을 강제 종료하고 다시 실행하는 작업을 쉽게 수행할 수 있습니다. adb shell am force-stop, adb shell am start -n, adb shell am kill, adb shell am restart 등의 명령어를 조합하면 Android 애플리케이션을 효과적으로 제어할 수 있습니다.

이러한 명령어는 앱 테스트, 디버깅, UI 문제 해결 등에 유용하게 활용될 수 있으며, 필요에 따라 자동화 스크립트로 만들어 반복적인 작업을 쉽게 수행할 수도 있습니다.

반응형