插件化框架对Android P non-sdk的适配

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

版权声明:本文为u010019468原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。