좋아, 난 그냥 여기에 찾을 수있는 소스 코드 주위에 서핑 (https://github.com/android/platform_frameworks_base). 나는 안드로이드 프레임 워크의 엔지니어가 아니에요, 나는 당신의 질문에 대해서 궁금해했고, 제가 발견 한 것은 여기에 있습니다.
다른 버전의 소스 코드를 모두 포함하지는 않습니다. 점점 더 많은 버전이 출시되면 악몽을 꾼다는 것을 상상할 수 있습니다. 무엇보다도, 같은 방법을 유지하기 위해 수정하지 않고 동일한 메소드의 다른 버전 (버그가 있음)을 사용하게됩니다. 소스 코드에서
, 당신은이 같은 장소를 찾을 수 있습니다 (
https://github.com/android/platform_frameworks_base/blob/59701b9ba5c453e327bc0e6873a9f6ff87a10391/core/java/com/android/internal/view/ActionBarPolicy.java#L55 참조)
public boolean hasEmbeddedTabs() {
final int targetSdk = mContext.getApplicationInfo().targetSdkVersion;
if (targetSdk >= Build.VERSION_CODES.JELLY_BEAN) {
return mContext.getResources().getBoolean(R.bool.action_bar_embed_tabs);
}
// ...
return mContext.getResources().getBoolean(R.bool.action_bar_embed_tabs_pre_jb);
}
그래서 안드로이드 개발자가 필요한 경우 코드의 버전 확인을한다. 그러나이 수표는 당신이 생각하는 것만 큼 필요한 것은 아닙니다. 방법을 변경하는 이유는 무엇입니까?
- 버그가 있습니다. 버그 수정 : 버그 수정. 테스트는 메서드의 일반적인 동작이 동일하게 유지되도록합니다.
- 메서드는 더 이상 사용되지 않습니다. 메서드를 제거 할 수 없습니다. 메서드를 제거 할 수 없습니다. 사용하지 않는 것으로 표시하고 최상의 결과를 얻으 려합니다. 컴파일러가 나머지를 처리합니다.
- 메서드 동작이 변경되어야합니다. 글쎄, 나는 그들이 쉽게 할 수없는 것이라고 생각합니다. 그들은 버전 코드 (꽤 못 생겨 유지 보수의 악몽이되어 버렸습니다)로 해결하거나 새로운 API를 소개하기 만하면됩니다. 그것이 동일한 API를 많이 사용하는 이유입니다.
아니요, 일반적으로 버그는 이전 버전과 호환됩니다. – user1095108
@ user1095108 예,하지만 이전 버전과의 호환성은 어떻게 실현됩니까? 시스템에 이전 버전의 코드가 포함되어 있지 않다고 말하면됩니다. 현재 SDK에서 더 이상 사용할 수없는 메서드를 사용하면 어떻게됩니까? 또는 메소드의 코드가 변경되면 어떻게 될까요? 시스템은 원래 코드를 어디에서 얻을 수 있습니까? –
SDK는 개발자가 사용할 수있는 인터페이스를 제공하며 인터페이스는 이전 버전과 호환됩니다. – bladefury