안드로이드 런타임(아트)은 안드로이드의 응용 프로그램 및 일부 시스템 서비스에서 사용하는 관리되는 런타임입니다. 예술과 그 전임자 달빅은 원래 창조되었습니다.특히 안드로이드 프로젝트를 위해. 런타임으로 예술은 달비 실행 가능한 형식 및 덱스 바이트 코드 사양을 실행합니다.
예술과 달빅은 덱스 바이트 코드를 실행하는 호환 런타임이므로 예술과 함께 실행할 때 달빅을 위해 개발 된 응용 프로그램이 작동해야합니다. 그러나 일부달빅 작업 기술은 예술에 작동하지 않습니다. 가장 중요한 문제에 대한 자세한 내용은 안드로이드 런타임(아트)에서 앱 동작 검증을 참조하십시오.
예술의 특징
다음은 예술에 의해 구현 된 주요 기능 중 일부입니다.
사전 편집
사전 편집을 도입하여 성능을 향상시킬 수 있습니다. 예술은 또한 달빅보다 엄격한 설치 시간 검증이 있습니다.
설치시,아트는 온-디바이스 엑스 2 코트 도구를 사용하여 응용 프로그램을 컴파일합니다. 이 유틸리티는 덱스 파일을 입력으로 허용하고 대상 장치에 대해 컴파일 된 앱 실행 파일을 생성합니다. 유틸리티는 다음을 수행 할 수 있어야합니다.모든 유효한 덱스 파일을 어려움없이 컴파일하십시오. 그러나 일부 사후 처리 도구는 달빅에 의해 허용 될 수 있지만 예술에 의해 제거 될 수없는 잘못된 파일을 생성합니다. 자세한 내용은 수집 문제 해결를 참조하십시오.가비지 콜렉션 개선
가비지 콜렉션은 리소스 집약적이어서 앱 성능이 저하되어 디스플레이가 고르지 않거나 사용자 인터페이스의 응답성이 저하되거나 기타 문제가 발생할 수 있습니다. 예술은 복장을 향상시킵니다.여러 가지 방법으로 수집:1965>
GC_FOR_ALLOC
이벤트를 매우 드물게 만듭니다개발 및 디버깅 개선
예술은 다음을 제공합니다 앱 개발 및 디버깅을 향상시키는 기능.
샘플링 프로파일러 지원
역사적으로 개발자는 응용 프로그램 실행을 추적하기 위해 설계된 추적 뷰 도구를 프로파일러로 사용했습니다. 추적 보기 유용한 정보를 제공 하는 동안 달 빅에 대 한 결과 메서드별 호출 오버 헤드에 의해 왜곡 되었습니다.
아트에서는 이러한 제한 사항이 없는 전용 샘플링 프로파일러에 대한 지원을 추가합니다. 이는 상당한 속도 저하 없이 앱 실행에 대한 보다 정확한 보기를 제공합니다. 샘플 지원이 킷캣 릴리스에서 포달빅의 추적 뷰에 추가되었습니다.
더 많은 디버깅 기능 지원
아트에서는 특히 모니터 및 쓰레기 컬렉션 관련 기능에서 여러 가지 새로운 디버깅 옵션을 지원합니다. 예를 들어 다음을 수행할 수 있습니다:
- 스택 추적에서 어떤 잠금이 유지되는지 확인한 다음 잠금을 보유하는 스레드로 이동합니다.
- 주어진 클래스에 얼마나 많은 라이브 인스턴스가 있는지 물어보고,인스턴스를 확인하도록 요청하고,어떤 참조가 객체를 라이브로 유지하고 있는지 확인하십시오.
- 특정 인스턴스의 이벤트(예:중단점)를 필터링합니다.
- 메서드가 종료될 때 반환되는 값을 참조하십시오(“메서드-종료”이벤트 사용).
- 특정 필드에 액세스 및/또는 수정할 때 프로그램 실행을 일시 중지하도록 필드 감시 지점을 설정합니다.
예외 및 충돌 보고서의 향상된 진단 세부 정보
아트에서는 런타임 예외가 발생할 때 가능한 한 많은 컨텍스트와 세부 정보를 제공합니다. 아트는java.lang.ClassCastException
,java.lang.ClassNotFoundException
및java.lang.NullPointerException
에 대한 확장된 예외 세부 정보를 제공합니다.(이후 버전의 달빅은java.lang.ArrayIndexOutOfBoundsException
과java.lang.ArrayStoreException
에 대한 확장된 예외 세부 사항을 제공했는데,여기에는 이제 배열의 크기와 범위를 벗어난 오프셋이 포함됩니다.)
예를 들어,java.lang.NullPointerException
는 이제 앱이 쓰려고 하는 필드 또는 호출하려고 하는 메서드와 같이 앱이 널 포인터로 수행하려는 작업에 대한 정보를 표시합니다. 다음은 몇 가지 일반적인 예입니다:
java.lang.NullPointerException: Attempt to write to field 'intandroid.accessibilityservice.AccessibilityServiceInfo.flags' on a null objectreference
java.lang.NullPointerException: Attempt to invoke virtual method'java.lang.String java.lang.Object.toString()' on a null object reference
예술은 또한 자바와 네이티브 스택 정보를 모두 포함하여,응용 프로그램 네이티브 충돌 보고서에서 향상된 컨텍스트 정보를 제공합니다.