2014-02-19 1 views
3

this question으로 지적한 바와 같이 android.os.Build.VERSION_CODES은 사용중인 VERSION_CODE 플랫폼 버전보다 오래된 플랫폼 버전에서 작동합니다.android.os.Build.VERSION_CODES가 이전 플랫폼에서 작동하는 이유

예. 이 : Honecomb가 진저 브레드 후 을 발표되었지만

android.os.Build.VERSION_CODES.HONEYCOMB 

또한, 진저 브레드 장치에서 작동합니다.

이것은 대상 SDK가 사용하는 VERSION_CODE보다 늦은 경우에만 작동하는 것으로 보입니다. 이는 버전 코드가 어떻게 든 타겟 SDK에서 APK로 컴파일된다는 가정에 이르게합니다.

이제 내 질문은 :

어떻게 작동합니까? 연결된 질문에 대한 답변에 따르면 int는 별칭을 통해 작동하지만 Java는 별칭을 지원하지 않는 것 같습니다.

답변

8

생성 된 바이트 코드에서 인라인 된 컴파일 타임 상수입니다. 따라서 심볼을 런타임에 확인할 필요가 없습니다.

컴파일 시간 상수는

+0

감사로 초기화 선언

  • 내에서 초기화
  • 원시 final 또는 String
  • 을 선언 뭔가입니다! 잊었던 점은 컴파일 타임에 최종 int가 대체된다는 것입니다. –

  • 5

    VERSION_CODES은 모두 정적 final int입니다. 즉, 앱을 빌드 할 때 모든 변수가 숫자로 바뀌 었음을 의미합니다. 기본적으로 컴파일 후 앱의 바이트 코드를 보면 각 버전 코드 변수가 나타내는 실제 int으로 대체 된 VERSION_CODES에 대한 참조가 표시 될 가능성이 높습니다.

    관련 문제