Tencent / Shadow

零反射全动态Android插件框架
BSD 3-Clause "New" or "Revised" License
7.47k stars 1.3k forks source link

ci: PR检查时的自动化测试的最新API调整为34 #1310

Closed shifujun closed 7 months ago

shifujun commented 7 months ago

本地测试通过。

Heart-Beats commented 7 months ago

大佬,API 33 上 PackageManager 多了一些方法,PackageManagerInvokeRedirect 中需要加上以下方法的实现,不然某些场景会报错:

    @TargetApi(Build.VERSION_CODES.TIRAMISU)
    public static PackageInfo getPackageInfo(ClassLoader classLoaderOfInvokeCode, String packageName,
                                             PackageManager.PackageInfoFlags flags) throws PackageManager.NameNotFoundException {
        return getPluginPackageManager(classLoaderOfInvokeCode).getPackageInfo(packageName, flags);
    }

        @TargetApi(Build.VERSION_CODES.TIRAMISU)
    public static PackageInfo getPackageInfo(ClassLoader classLoaderOfInvokeCode, VersionedPackage versionedPackage,
                                             PackageManager.PackageInfoFlags flags) throws PackageManager.NameNotFoundException {
        return getPluginPackageManager(classLoaderOfInvokeCode).getPackageInfo(versionedPackage.getPackageName(), flags);
    }
shifujun commented 7 months ago

大佬,API 33 上 PackageManager 多了一些方法,PackageManagerInvokeRedirect 中需要加上以下方法的实现,不然某些场景会报错:

    @TargetApi(Build.VERSION_CODES.TIRAMISU)
    public static PackageInfo getPackageInfo(ClassLoader classLoaderOfInvokeCode, String packageName,
                                             PackageManager.PackageInfoFlags flags) throws PackageManager.NameNotFoundException {
        return getPluginPackageManager(classLoaderOfInvokeCode).getPackageInfo(packageName, flags);
    }

        @TargetApi(Build.VERSION_CODES.TIRAMISU)
    public static PackageInfo getPackageInfo(ClassLoader classLoaderOfInvokeCode, VersionedPackage versionedPackage,
                                             PackageManager.PackageInfoFlags flags) throws PackageManager.NameNotFoundException {
        return getPluginPackageManager(classLoaderOfInvokeCode).getPackageInfo(versionedPackage.getPackageName(), flags);
    }

Shadow始终都没有实现所有该实现的方法。恐怕连API 16都没有完全支持。这是原理上造成的问题,我们应对方法就是动态化插件框架,随用随支持。所以我们的自动化测试只是测支持的方法。这个API 34看起来应该就是没有破坏我们已有的支持。所以会有这个PR。

至于你说的“某些场景会报错”,欢迎你在代码中补充自动化测试用例以表达这些场景,然后可以进一步提供支持代码。

shifujun commented 7 months ago

看起来34的虚拟机在CI上启动不太稳定,那就先算了。过一阵再说。