본문 바로가기
개발(Development)/Android(안드로이드)

[안드로이드] 코드/리소스 일부 수정 즉시 반영 테스트 방법: Apply Changes (Instant Run 대체: 재빌드X, 재실행X)

by 카레유 2021. 8. 24.

에뮬레이터에서 앱을 실행한 상태에서,

일부 코드나 리소스만 수정해서 테스트 해보는 경우,

앱을 종료 시킨후 다시 재빌드하여 설치/실행하는 작업이 번거롭게 느껴질 때가 많다.

 

안드로이드 스튜디오에서는

이렇게 코드나 리소스의 일부만 수정된 경우,

앱 종료나 재빌드 없이 바로 해당 부분만 교체하여 즉시 실행 할 수 있는 방법을 제공한다.

 

이를 Apply Changes 라고 한다.

(과거에 제공되던 Instant Run 기능은 최신 안드로이드 스튜디오에선 제거되었다.)


# Apply Changes: 안드로이드 코드/리소스 수정 즉시 반영 방법

안드로이드에서 Run 버튼을 눌러 앱을 빌드하고, 에뮬레이터에 설치/실행하면,

아래와 같은 3개의 버튼이 활성화 된다.

 

1. Apply Code Changes

- 함수(메서드)의 내부 코드가 일부 변경 되었을 때 사용한다.

- 앱/액티비티의 재실행 없이 바로 적용된다.

 

 

2. Apply Changes and Restart Activity 

- 리소스(레이아웃, 문자열 등)와 함수 내부의 코드가 일부 변경되었을 때 사용한다.

- 앱은 재실행되지 않고, 관련 액티비티만 변경된 리소스가 적용되어 재시작 된다.

 

 

3. Run 'app'

- Apply Changes 적용이 불가한 변경* 이 있는 경우에 사용한다.

- 변경된 버전으로 앱이 빠르게 재실행되며, 재설치 과정은 거치지 않는다.(고 하는데, 로그 상에선 설치된다고 나오는 것 같다.)

- 앱이 실행중이지 않을 때는 아래처럼 Run버튼의 모양이 변경되는데, 이 상태에서 Run버튼을 클릭하면 새로 빌드 및 설치되어 실행된다.

 

* Apply Chages 적용이 불가한 변경의 예는 다음과 같다

  • 필드 추가 또는 삭제
  • 메서드 삭제
  • 메서드 서명 변경
  • 메서드 또는 클래스의 수식어 변경
  • 클래스 상속 변경
  • Enum의 값 변경
  • 리소스 추가 또는 삭제
  • 앱 매니페스트 변경
  • 네이티브 라이브러리(SO 파일) 변경

# 변경사항 적용 결과

1. 변경 사항이 잘 반영된 경우

- "Applying Changes to 'app' on 에뮬레이터" 로그가 찍히며 실행 중인 앱에 반영된다.

 

2. 변경 사항이 적용되지 않은 경우

- "Changes were not applied" 로그가 찍히며,

- Reinstall 및 Restrart가 필요하다는 메시지가 노출된다.


Apply Changes에 대한 더욱 상세한 내용은 안드로이드 개발자 사이트 참고

https://developer.android.com/studio/run?hl=ko#apply-changes

 

 

댓글