Android Studio 3.5에는 인기 있는 앱 개발 도구의 Instant Run 기능의 후속 기능인 Apply Changes가 도입되었습니다.
Android Studio 3.5(현재 Canary 및 Dev 채널에 있음)는 이제 앱을 다시 시작하지 않고도 코드 변경 사항을 앱에 푸시하고 그 효과를 즉시 확인할 수 있는 새로운 방법을 제공합니다. 단순히 "변경 사항 적용"이라고 불리는 이 기능은 이전 버전의 "인스턴트 실행" 기능을 계승한 것입니다. 안드로이드 스튜디오.
구글의 Android 개발자 블로그 변경 사항 적용에 대해 다음과 같이 말합니다.
Apply Changes를 사용하면 앱을 다시 시작하지 않고, 경우에 따라 현재 활동을 다시 시작하지 않고도 실행 중인 앱에 코드 및 리소스 변경 사항을 푸시할 수 있습니다. Apply Changes는 Instant Run을 빌드 최적화를 위한 완전히 새로운 접근 방식으로 대체합니다. 빌드 시간 동안 APK의 바이트코드를 다시 작성하는 대신 Apply Changes는 Android 8.0(API 레벨 26) 이상에서 지원되는 런타임 계측을 활용하여 즉시 클래스를 재정의합니다.
또한 이제 Android Studio에서는 변경 사항이 Apply Changes와 호환되지 않음을 감지하면 앱이나 활동을 다시 시작할지 여부를 결정하라는 메시지를 표시합니다. 이 추가 제어 기능은 Instant Run의 동작에 비해 더 일관되고 예측 가능한 경험을 제공해야 합니다.
블로그 게시물에서는 계속해서 새로운 기능에 대한 몇 가지 제한 사항을 나열합니다. 예를 들어 앱을 테스트하는 기기는 최소한 실행 중이어야 합니다. 안드로이드 8.0 오레오(API 레벨 26) 그리고 여전히 앱을 다시 시작해야 하는 특정 코드 변경 사항이 있습니다. "즉시 실행"과 마찬가지로 "변경 사항 적용"은 다음과 같은 경우 앱을 강제로 다시 시작합니다.
- 클래스, 메서드 또는 필드 추가 또는 삭제
- 매니페스트 변경
- 메소드 서명 변경
- 메소드 또는 클래스의 수정자 변경
- 수업 이름 바꾸기
- 클래스 상속 변경
- 리소스 추가 또는 제거
"알려진 문제" 아래 블로그 게시물에는 Google이 처음에 이 새로운 기능에서 성능보다 안정성을 우선시했기 때문에 "변경 사항 적용"이 때때로 실행된다고 명시되어 있습니다. 이전 기능인 "Instant Run"보다 더 느립니다. 또한 x86_x64 에뮬레이터 이미지는 지원되지 않으며, 디버깅을 위해 Android Pie(API 레벨 28)만 지원됩니다. 지원됩니다. 아래 소스 링크에서 제한 사항 및 알려진 문제의 전체 목록을 볼 수 있습니다.
"Apply Changes"와 "Instant Run"의 차이점에 대해 더 자세히 설명하기 위해 Android Studio 팀의 Google 직원이 다음과 같이 말했습니다. 레딧:
그것은 아주 아주 다른 일을 합니다. Instant Run은 빌드에 매우 구체적인 영향을 미쳤습니다. 컴파일 타임에 각 클래스를 계측하여 런타임 중에 클래스의 새 버전으로 대체될 수 있도록 준비했습니다. 또한 APK를 여러 APK로 분할하여 앱을 더 점진적으로 다시 업로드합니다.
Apply Changes는 이와 같은 기능을 수행하지 않습니다. Apply Changes 사용 여부에 관계없이 APK는 거의 동일합니다. 대신 ART VM의 새로운 런타임 계측 기능을 사용하여 클래스를 동적으로 다시 로드하고 앱이 실행되는 동안 클래스를 교체합니다. 이것이 훨씬 최신 버전의 Android가 필요한 이유입니다.
Google이 성능과 안정성을 개선함에 따라 "변경 사항 적용"은 결국 베타 및 안정 버전 채널의 "인스턴트 실행"을 대체할 것으로 예상됩니다.
출처: Android 개발자 블로그