Android调用系统隐藏API时注意的问题

Posted feiniao8651

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android调用系统隐藏API时注意的问题相关的知识,希望对你有一定的参考价值。

android P(28)开始的限制

从 Android 9(API 级别 28)开始,Android 平台对应用能使用的非 SDK 接口实施了限制。只要应用引用非 SDK 接口或尝试使用反射或 JNI 来获取其句柄,这些限制就适用。这些限制旨在帮助提升用户体验和开发者体验,为用户降低应用发生崩溃的风险,同时为开发者降低紧急发布的风险

也就是说从android sdk 版本28开始,系统会限制隐藏api的调用,所以我们只能使用27及以前的sdk版本。

AndrodX的引用

AndroidX已经取代了原有的android support library,所以很多项目都会引用AndroidX,但是因为AndroidX要求sdk版本在28以上,所以当我们如果要引用隐藏api,就需要将AndroidX改为android support library。

引用jitpack旧版本包时的问题

举例来说,我们项目中引用了Parse-SDK-Android,从包的介绍页面来看,页面上记录的版本都要在1.24.0以后。
在这里插入图片描述
查看github上该包的changelog,从1.19.0开始,包使用sdk 28。而之前最新的包是1.18.5,这里jitpack页面上没有写这个版本号,但是我们依然可以将build.gradle里的版本号改成1.18.5,发现依然能正常下载。

Android P以上该怎么办?

也不是没有办法,具体参考这篇文章:
听说你想在Android P上使用hide api?

参考:
Android Studio使用系统隐藏API的方法
针对非 SDK 接口的限制
AndroidX 概览

以上是关于Android调用系统隐藏API时注意的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何调用Android隐藏API

小花招解决Android 9 Pie 不能反射隐藏API限制

突破Android P(Preview 1)对调用隐藏API限制的方法

如何调用Android隐藏API

隐藏导航抽屉菜单项 - Android

Android studio 怎样使用隐藏API