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 概览

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值