2014-02-04 4 views
0

Я использую TagSoup в одном из своих проектов и внесли некоторые изменения в HTMLSchema.java, чтобы справиться с вложенными тегами списка. Когда я протестировал эти изменения, они не имели никакого эффекта. Я тестировал те же изменения в автономном приложении Java, и они работали по назначению.Android использует неправильные классы

Когда я пытался отладить приложение, я заметил, что он не отображает правильный номер строки в отладчике, поэтому я делал то, что вы обычно делаете в таких случаях: перестройка проекта, перезапуск среды IDE, перезапуск Android-устройство и ПК, создавая новый Android-проект, все безрезультатно.

Я удалил весь код из некоторых классов, и приложение все еще запускалось, как и раньше, поэтому ядро ​​Android использовало разные классы, чем те, которые я развернул с моим приложением. Я сделал тестовый проект Android пустым всего, кроме обычного MainActivity, макета и чертежей, добавил классы TagSoup и код для разбора с помощью TagSoup, и он по-прежнему не использовал «мои» классы TagSoup. Я протестировал это с помощью двух 4.4.2 устройств Nexus и в Note 2, идущем 4.1.2.

Только когда я переименовал имя пакета из org.ccil.cowan.tagsoup в другое место (например, org.ccil.cowan.tagsoup2), он использовал классы, развернутые с моим приложением.

Мой вопрос прост: что происходит?

ответ

2

TagSoup является частью самого Android. Копия своих классов, которые поставляются вместе с каркасом, автоматически загружается в вашу виртуальную машину ... даже если они не являются частью Android SDK. Вы видите то же самое с библиотеками, такими как BouncyCastle.

Рефакторинг сторонней библиотеки - с использованием jarjar или другими средствами - позволяет одновременно использовать версию Android и вашу версию библиотеки.

+0

Это был мой вывод, но я хотел подтвердить его, и вы только что это сделали. Спасибо ;-). Итак, вы говорите, что если я использую исходные файлы (а не файл jar), я должен перефазировать их, как переименование пакета? –

+0

Ещё один вопрос. Есть ли документация, по которой классы отправляются вместе с каркасом и загружаются автоматически? –

+0

@EmanuelMoecklin: «Есть ли документация, по которой классы поставляются с каркасом и загружаются автоматически?» - Теперь, не так ли, чтобы это было хорошо? Увы, нет. Вы можете посмотреть источники AOSP и посмотреть, какие библиотеки сторонних производителей находятся в их коллекции репозиториев, но я бы не назвал эту «документацию». – CommonsWare

 Смежные вопросы

  • Нет связанных вопросов^_^