안드로이드 앱 제작시 기본적으로 코드의 결과를 확인하는 과정은 다음과 같다.
코드 작성 -> 빌드 -> 결과물 deploy -> 결과물 확인
이 과정을 반복적으로 계속 하면서 확인하게 된다.
하지만 Instant Run, 이 기능을 이용하게 된다면 말그대로 코드 수정하는 즉시 적용되는 것을 볼 수 있다. 코드를 수정하는 순간 빌드, deploy 없이 바로 결과물을 확인할 수 있다는 뜻이다.
그렇다면 어떤 경우에 해당 기능이 적용될 수 있는지 알아보도록 하자.
Android Studio 2.0 이상
Android Plugin for Gradle version 2.0.0 이상
minSdkVersion 15 이상 (원활한 성능을 위해서는 minSdkVersion 21 이상)
Instant Run의 종류에는 아래와 같이 3가지의 경우가 있다.
hot swap
warm swap
cold swap
하나씩 어떤 경우에 쓰이는지 알아보자
-. hot swap
(이미 존재하는 method의 코드를 수정하는 경우)
가장 빠른 방식으로 다음에 수정된 method를 호출하는 경우 바로 확인이 가능하다. object 자체를 재초기화를 하지 않으므로, 필요하다면 activity나 app자체를 다시 실행해야 할 수도 있다. disable도 가능하지만 기본적으로 재시작하게 설정되어 있다.
[File > Settings > Build, Execution, Deployment > Instant Run]
"Restart activity on code changes" 를 uncheck 하면 hotswap 시 activity 가 restart 되지 않는다.
-. warm swap
(기 존재하는 resource를 변경하거나 삭제하는 경우)
마찬가지로 빠르게 동작하며, 현재 동작 중인 activity를 재시작해야만 한다. 잠시 깜빡 거리는 것을 볼 수도 있지만 정상적인 동작이다.
-. cold swap
(API level 21 이상)
(아래와 같은 Structural Code가 변경된 경우)
annotation, instance field, static field, static method signature, instance method signature 가 Add, remove, change 되었을 경우.
상속한 부모 class가 변경되었을 경우
구현된 interface list가 변경되었을 경우
class의 static initializer가 변경되었을 경우
dynamic resource ID를 사용 중인 layout elements가 reorder 되었을 경우
위와 같이 전체적인 특이 변경되었을 경우 다소 느리지만 app자체를 재구동하여야 한다. 해당 cold swap은 API level 21 이상에서 사용할 수 있는 경우로 그 밑의 버전이라면 instant run을 사용하지 못하고 기본적인 방식과 같이 full APK를 deploy해야 한다.
-. 전통적인 방식 (full APK build and deploy)
app의 manifest를 변경하는 경우
app manifest가 참조하는 resources가 변경되는 경우
Android widget UI element가 변경되는 경우
위의 경우에는 전통적인 방식으로 전체 APK를 새로 빌드하고 deploy해서 확인해야만 한다.
[Android Studio Console Log]
'Android' 카테고리의 다른 글
stetho - 실시간 sqlite db 접근 및 디버깅 (0) | 2019.01.06 |
---|---|
Android - Material icon 의 사용 in Android Studio (0) | 2018.12.27 |
Android Studio, 외부 java library (.JAR, .AAR) 추가 (0) | 2017.02.13 |
Android Studio, module 삭제. (0) | 2016.07.19 |
[해결방법] The number of method references in a .dex file cannot exceed 64K. (1) | 2016.07.18 |
[해결방법] To run dex in process, the Gradle daemon needs a larger heap. (0) | 2016.07.18 |
Android - Android Studio에서 빌드 후 apk 위치. (0) | 2016.07.18 |
Messenger, SNS API 등을 통한 친구 목록 가져오기. (0) | 2016.03.18 |