ㅈㅅㄹ

안드로이드 Javadoc을 보다보면 SDK Reference에서는 볼 수 없는 클래스들이 보인다. 처음에는 주의를 기울이지 않고 봐서 그냥 SDK 버전이 다르겠거니 하고 있었는데, 오늘 특정 클래스가 안드로이드 소스에는 존재를 하지만 그 소스에서 빌드한 SDK의 android.jar에는 포함되지 않는 걸 보았다.

android.net.WebAddress 소스:
package android.net;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * {@hide}
 *
 * Web Address Parser
 *
 * This is called WebAddress, rather than URL or URI, because it
 * attempts to parse the stuff that a user will actually type into a
 * browser address widget.
 *
 * Unlike java.net.uri, this parser will not choke on URIs missing
 * schemes.  It will only throw a ParseException if the input is
 * really hosed.
 *
 * If given an https scheme but no port, fills in port
 *
 */

확인해 보니 SDK 쪽에 포함되지 않는 클래스들의 소스에는 @hide라는 표시가 있었는데, 관련해서 찾아보니 다음과 같은 내용을 확인할 수 있었다.


@hide has a very important meaning. It is used to mark public APIs 
that are not to be exported in the SDK. This is used by the Android 
team to have APIs accessible across packages without having them 
available to applications. APIs marked with @hide are considered 
private to the Android platform and can change at any time, you cannot 
rely on them. 

안드로이드 소스 내에서는 접근가능하게 하지만, 이걸 SDK로 배포하지는 않는다는 내용. 물론 다음 버전에서 어떻게 바뀔지 보장하지 않는다는 내용도 되겠다. 결국 타겟에 preload되는 어플을 개발할 경우에나 사용가능한 놈이다라고 생각하면 될 듯?