пользовательский загрузчик классов для Android?

Я пишу инструментальную библиотеку, которую я хотел бы использовать как на рабочем столе, так и на мобильных устройствах (Android).

Он работает следующим образом:

  1. Предоставление main, который принимает один параметр, main целевого класса
  2. Установка загрузчика классов, который перехватывает все классы по мере их загрузки и обрабатывает их

Вот так:

    // Expects args[0] to contain the name of the INNER main
    public static void main(String[] args) throws Throwable {
            String className = args[0];
            String [] newArgs = new String[0];

            if(args.length > 1) {
                    newArgs = Arrays.copyOfRange(args, 1, args.length-1);
            }

            System.out.println("Bootstrapping " + className);

            Loader s = new Loader(ClassLoader.getSystemClassLoader().getParent());
            Class<?> c = s.loadClass(className);
            c.getDeclaredMethod("main", new Class[] { String[].class }).invoke(
                            null, new Object[] { newArgs });
    }

​​Вопрос в следующем:

Как я могу сделать примерно то же самое для приложения для Android?

Одна из идей состоит в том, чтобы изменить манифест Android, чтобы заменить существующие действия действиями-«обертками», которые затем устанавливают загрузчики классов и вызывают исходное основное действие. Есть ли лучший способ?

5
задан amirpc 31 May 2012 в 10:43
поделиться