sdk接口到底是什么, 非SDK接口又是什么?求解答,通俗一点, 5

求解答,通俗一点,说说实例,不要说一堆专业名词,感谢感谢... 求解答,通俗一点,说说实例,不要说一堆专业名词,感谢感谢 展开
 我来答
无和有
高粉答主

2020-05-17 · 自由是我的最大追求,无中生有
无和有
采纳数:65 获赞数:45776

向TA提问 私信TA
展开全部

首先,公共SDK接口是在Android框架软件包索引中记录的那些接口,而非SDK接口的处理是API抽象出来的实现细节,因此这些接口可能会在不另行通知的情况下随时发生更改。

比如应用在通过反射等机制与类互动时(WebView、HTTP等),android9.0之后就不应访问SDK中未列出的方法或字段,否则会提示报错,应用老老实实的用谷歌大佬提供的API就好了。

扩展资料

应用调试时进行测试

先建议开启lintOptions,检测一下其他问题。

另外在搭载Android9(API级别28)或更高版本的设备或模拟器上构建和运行可调试应用来测试该应用是否使用非SDK接口。

在应用上运行测试时,如果该应用访问了某些非SDK接口,系统就会输出一条日志消息。

可以检查应用的日志消息,查找以下详细信息:

声明的类、名称和类型(采用Android运行时所使用的格式)。

访问方式:链接、反射或JNI

所访问的非SDK接口属于哪个列表。

然后去远足
2018-03-22 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2427万
展开全部
题主是指 Android 9 中提到的“非 SDK 接口”吗?
这个东西在 iOS 开发中叫“私有 API”。
通俗的说,两者都是官方提供的接口。但前者明文包含在 SDK 中,允许开发者调用;后者出于各方面原因(比如还在测试中或是这个接口仅供系统内部调用),不鼓励甚至禁止开发者调用。
追问
对对对,就是安卓9中的“非SDK接口”,一直搞不明白是什么意思。SDK我知道是什么,但“SDK接口不知道是什么”。您的意思“SDK接口”是指SDK API(SDK中的API)吗?   那“非SDK接口”就是SDK以外的API ?    反映到具体的安卓应用上是什么样的?什么样的APP使用的是SDK接口?什么样的APP使用的是非SDK接口? 
万分感谢!
追答
SDK 就是一整套 API。
安卓开发者文档里提供的就都是“SDK 接口”;没提供的、甚至有些是 private 的字段或方法,就是“非 SDK 接口”了。
我猜题主之所以问这个问题,是担心自己不小心调了什么“非 SDK 接口”?所有“非 SDK 接口”,你都无法通过正常的方式调用,都需要通过反射等其他手段来实现。题主现在提了这个问题,一般是还没到能使用他们的程度……
非 SDK 接口太多了,但因为他们并不在官方提供的文档之上,所以能被人所知的基本都是通过反编译等手段“非法”取得的。热更新啊、后台常驻啊一般用这种“黑魔法”比较多,因为说白了官方不让你这么干,你非得干,就得动动别的心思了……
再比如系统自带的 DatePicker,默认是“年月日”,但现在有个需求是只选择“年月”,必须用 DatePicker 而不能自定义控件,那这个时候就得通过反射访问其内部本来是 private 的 mDaySpinner 来不让它显示了。人家之所以用 private 修饰的就是不让你在外部访问它,结果你用其他手段访问了,这也是一种“非 SDK 接口”。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式