Приложение Google TV с внешними библиотеками (jar) - PullRequest
1 голос
/ 19 января 2012

Я пытаюсь запустить простое приложение на эмуляторе Google TV.

В приложении есть jar, оно находится как в пути сборки, так и в папке lib, работает на ICS и на Honeycomb 3.1(планшет), но в эмуляторе Google TV происходит сбой:

D/dalvikvm( 1707): DexOpt: 'Ljavax/jmdns/ServiceListener;' has an earlier definition; blocking out

Как будто библиотека уже загружена.

Кто-нибудь видел это раньше?

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 марта 2012

Спасибо, этот пост помог мне добиться прогресса в проекте GTV, над которым я работаю, который использует jmDNS. Мне был нужен jmDNS для обнаружения принтеров в сети, и я обнаружил, что версия jmDNS, встроенная в GTV (версия 2.1), не обнаруживает принтеры. Я взял последнюю версию jmDNS (в то время v3.4.1), изменил имена пространств имен, перекомпилировал в свой код и запустил мое приложение на GTV. Обнаружение принтера теперь прекрасно работает. Конечно, я не могу отправить свое приложение с измененной версией jmDNS из-за условий лицензирования Apache. Но до тех пор, пока код GTV не будет обновлен для включения более новой версии jmDNS, изменение имен пространства имен в исходном коде jmDNS позволит вам разработать приложение для обнаружения принтеров.

0 голосов
/ 19 января 2012

Да, я видел это раньше. Google TV использует JMDNS для поддержки программных пультов дистанционного управления. Когда я включал JMDNS в свое собственное приложение, оно всегда загружало классы из версии, уже установленной на устройстве, а не из моей копии классов. Я провел все свои тесты на устройстве Google TV и не использовал эмулятор. Версия JMDNS в Google TV также выглядит старше, чем последняя версия JMDNS. В своем коде я вызывал новые функции, которые не работали на устройстве, даже если моя копия JAR-файла JMDNS имела эти новые сигнатуры функций. Похоже, что загрузчик классов на Android / Google TV всегда подбирает системные файлы JAR, прежде чем добраться до файлов JAR каждого приложения.

...