2012-01-19 11 views
1

Google TVエミュレータで簡単なアプリを実行しようとしています。外部ライブラリを使用したGoogle TVアプリ(jar)

アプリは瓶を持って、それは、ビルド・パスにし、libフォルダの両方であることがICSにハニカム3.1(タブレット)で動作しますが、Google TVのエミュレータ上で、それがクラッシュ:

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

あたかもlibが既にロードされているかのように。

誰でもこれまでに見たことがありますか?

ありがとうございました

答えて

0

はい、私は以前これを見ました。 Google TVはソフトウェアリモートコントロールをサポートするためにJMDNSを使用しています。自分のアプリケーションにJMDNSを組み込んだとき、クラスのコピーではなく、デバイスに既にインストールされているバージョンからクラスをロードしていました。私はすべてのテストをGoogle TVデバイスで行い、エミュレータを使用しませんでした。 Google TVのJMDNSバージョンもJMDNSの最新バージョンより古いと思われます。私のコードでは、JMDNS jarのコピーにこれらの新しい関数の署名があったとしても、デバイスで失敗した新しい関数を呼び出しました。 Android/Google TVのクラスローダーは、各アプリケーションのjarファイルに到達する前にシステムのjarファイルを常にピックアップしているようです。

0

この投稿は、私がjmDNSを使用しているGTVプロジェクトで進歩するのを助けました。ネットワーク上のプリンタを検出するためにjmDNSが必要で、GTV(バージョン2.1)に組み込まれているjmDNSのバージョンがプリンタを検出しないことがわかりました。私は最新のjmDNSバージョンを(v3.4.1の時点で)使用し、名前空間の名前を変更し、コードに再コンパイルし、GTVでアプリケーションを実行しました。プリンタの検出はすぐに有効です。もちろん、私はApacheのライセンス条項のためにjmDNSの変更されたバージョンで私のアプリを出荷することはできません。しかし、GDMコードが新しいバージョンのjmDNSを含むように更新されるまで、jmDNSソースコード内の名前空間名を変更すると、プリンタ検出アプリを開発することができます。

+1

私は弁護士ではありませんが、「Apacheのライセンス条項のために変更されたバージョンのjmDNSで私のアプリケーションを出荷することはできません」との記述は間違っています。もちろん、rhwライセンスの再配布部分に従っている限り、Apacheライセンスとともに派生コードを使用することができます。 – dljava

関連する問題