ClassLoader для замены предварительно загруженного класса?

Общий вопрос: Можно ли использовать ClassLoader для замены предварительно загруженного (системой, например, найденного в файле Android % android% / frameworks / base / preloaded-classes ) класса?

Конкретный: ] Я пытаюсь использовать DexClassLoader для замены класса, найденного в android.net. *, Перед созданием WebView в моем приложении. Я могу получить объект класса, но getMethods (), например, дает мне массив, который я ожидал бы в реализации немодифицированного / исходного класса. Это связано с системой предварительно загруженных классов?

Базовая настройка и псевдокод:

  1. Измените класс android.net. *, Добавив несколько тестовых методов / и т. Д.
  2. Скомпилируйте и получите classes.dex
  3. jar cf mytest.jar classes.dex
  4. Включить mytest.jar в ресурсы APK
  5. Создать DexClassLoader и получить класс через loadClass ()
  6. getMethods () в объекте Class возвращает массив, который я ожидал бы увидеть без модификаций, представленных в №1

, я могу предоставить более подробную информацию о настройке, которую я использую, и при необходимости написать код.

9
задан NuSkooler 8 July 2011 в 17:26
поделиться