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 9 Pie 不能反射隐藏API限制