Android P non-sdk
对于非sdk接口的hide field和方法,Android P进行限制调用,可以参考如下文章https://juejin.im/post/5b8959f96fb9a019fe685eb3
为了适配P,整体原则就是能绕过non-sdk方法就想办法找到兼容替代方法,实在不行就把TargetSdk 降低到28
以下是对目前使用的到Hook方面以及插件化中在P中的限制api 调用
关于插件中Hook
目前Hook 涉及到Instrumentation 、IActivityManager、IContentProvider,均通过查询并没有限制这些实例的限制,应该是可以使用的。1)Instrumention 主要是Hook ActivityThread中的mInstrumentation
对于资源Resource的加载
摒弃现在通用的反射方式反射调用addAssetsPath接口,也就是上述的灰度名单
采用如下非hook方式获取到AssertManager:
PackageManager packageManager = mContext.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageArchiveInfo(apkPath, flags);
ApplicationInfo applicationInfo = packageInfo.applicationInfo;
Resources resources;
try {
resources = packageManager.getResourcesForApplication(ap