android系统在对外发布时,会使用 @hide 隐藏一部分api,在做apk开发时,我们可以通过反射去调用这些已经隐藏的方法.
对于怎样通过反射去调用这些隐藏方法,这里不做解释.
本篇文章重点讨论的问题是
为什么在系统自带app中这些隐藏的方法又可以使用呢?
如上图中SoundRecorder.java中
import android.os.ServiceManager 可以正常使用
进一步对比之后在app编译.mk文件中我们找到了差异
LOCAL_SDK_VERSION
结论:如果在 .mk 编译时增加了上述 编译描述 apk中不能调用隐藏方法
API 5之后android系统中开始使用@hide