News

新闻动态

sdk接口到底是什么, 非SDK接口又是什么?

   通俗的说,sdk接口两者都是官方提供的接口。但前者明文包含在 SDK 中,允许开发人调用;后者出于各方面原因(比如还在测试中或是这个接口仅供系统内部调用),不鼓励甚至禁止开发人调用。
   SDK 就是一整套 API。
   安卓开发人文档里提供的就都是“SDK 接口”;没提供的、甚至有些是 private 的字段或方法,就是“非 SDK 接口”了。
   我猜题主之所以问这个问题,是担心自己不小心调了什么“非 SDK 接口”?所有“非 SDK 接口”,你都无法通过正常的方式调用,都需要通过反射等其他手段来实现。题主现在提了这个问题,一般是还没到能使用他们的程度……
非 SDK 接口太多了,但因为他们并不在官方提供的文档之上,所以能被人所知的基本都是通过反编译等手段“非法”取得的。热更新啊、后台常驻啊一般用这种“黑魔法”比较多,因为说白了官方不让你这么干,你非得干,就得动动别的心思了……
   再比如系统自带的 DatePicker,默认是“年月日”,但现在有个需求是只选择“年月”,必须用 DatePicker 而不能自定义控件,那这个时候就得通过反射访问其内部本来是 private 的 mDaySpinner 来不让它显示了。人家之所以用 private 修饰的就是不让你在外部访问它,结果你用其他手段访问了,这也是一种“非 SDK 接口”。 

粤公网安备 44011302001070号