Android系统,动态找出一个包下所有的类

    最近在写一个android应用,由于针对不同机型功能很不同,为了隔离变化,希望将各项功能插件化,通过编译开关来控制不同版本的功能,而不是在代码中通过逻辑来判断。

    我想了一个办法,用表驱动的方法,结合插件类的静态代码块自注册。但这就需要找到固定包下的所有类,然后主动初始化这些类,执行静态代码块。下面是运行时找出一个包下所有类的方法

   private static String[] getC<span style="font-size:18px;">lasses</span>FromPackage(Context context<span style="font-size:18px;">,String packageName</span>) {
        ArrayList<String> classes = new ArrayList<String>();
        try {
            DexFile df = new DexFile(context.getPackageCodePath());
            Enumeration<String> entries = df.entries(); 
            while (entries.hasMoreElements()) {
                String className = (String) entries.nextElement();
                if (className.contains(packageName)) {
                    classes.add(className);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return classes.toArray(new String[]{});
    }


原文地址:https://www.cnblogs.com/yuanchongjie/p/4448357.html