5

短縮版

android.support.v7.app.MediaRouteButton オブジェクトをインスタンス化するときに未処理の例外が発生します。私は得る:

NoClassDefFoundError: android.support.v7.mediarouter.R$attr

このクラスはどこですか?または、自動生成されている場合、どうすれば自動生成できますか?

ロングバージョン

ここにある chromecast 用の Android アプリ開発のチュートリアルに従っています: https://developers.google.com/cast/cast_2nd-screen_app_tutorial

ubuntu 13.04でADTバンドルのEclipseを使用して開発しています。

次のjarファイルをワークスペースのlibsディレクトリにインポートし、プロジェクトのプロパティの[Java Build Path]パネルの[Libraries]タブにある[Add Jars ...]ボタンを使用してJava Build Pathに含めました:

  • GoogleCastSdkAndroid-1.0.0.jar
  • android-support-v4.jar
  • android-support-v7-appcompat.jar
  • android-support-v7-gridlayout.jar
  • android-support-v7-mediarouter.jar

単一のアクティビティ (Eclipse によって作成されたデフォルトの「hello world」) があり、レイアウトを変更していません。エラー(以下に貼り付け)を表示するために追加する必要がある唯一のコードは次のとおりです。

import android.support.v7.app.MediaRouteButton;
...
MediaRouteButton mrb = new MediaRouteButton(this.getApplicationContext());

アプリをビルドして実行すると、以下の LogCat に貼り付けられたエラー メッセージが表示されます (関連性があると思われる場合は、さらに投稿できます)。私が気付いた重要なことは、android.support.v7.mediarouter.R$attr (NoClassDefFoundError) が欠落しているように見えることと、それが android.support.v7.app.MediaRouteButton のコンストラクターから呼び出されていることです。

08-12 00:36:02.837: E/AndroidRuntime(29600): java.lang.NoClassDefFoundError: android.support.v7.mediarouter.R$attr
08-12 00:36:02.837: E/AndroidRuntime(29600):    at android.support.v7.app.MediaRouteButton.<init>(MediaRouteButton.java:117)
08-12 00:36:02.837: E/AndroidRuntime(29600):    at android.support.v7.app.MediaRouteButton.<init>(MediaRouteButton.java:113)
08-12 00:36:02.837: E/AndroidRuntime(29600):    at com.jeffbmartinez.helicast.MainActivity.onCreate(MainActivity.java:31)
...

MediaRouteButton のコンストラクターを実行しているという事実により、jar ファイルが適切に検出されていると思われるため、依存関係 (jar ファイル) に関して eclipse を誤って構成したとは思いません。ただし、これらの「R」ファイルは自動生成されると理解しています。これが正しければ、android.support.v7.mediarouter.R ファイルはどこにありますか? com.jeffbmartinez.helicast.R ファイルが配置されている gen ディレクトリには表示されません。

さらに、MediaRouteButton が、上記の 5 つの jar 依存関係のいずれにも見つからないパッケージ名を参照していることに興味があります。android-support-v7-mediarouter.jar にはandroid.support.v7.app.*android.support.v7.media. * のみが含まれています。

エラーログを除いて、android.support.v7.mediarouterへの参照を見つける唯一の場所はhttps://developer.android.com/reference/android/support/v7/mediarouter/package-summary.htmlですが、そこにはほとんど情報がありません。

依存関係がありませんか? もしそうなら、どこでそれを入手するか、またはどのように生成しますか?

ありがとう!

4

2 に答える 2

9

jar だけを含めることはできません。android.support.v7.mediarouterプロジェクトを Android ライブラリの依存関係として追加する必要があります。そうすれば、プロジェクトのリソースが自分のリソースにマージされます。

mediarouterフォルダー内で実行するandroid update lib-project -p .と、それを依存関係として追加できます。

于 2013-08-12T08:40:55.617 に答える
1

XML コンパイル エラーを回避するには、ANDROID API 17 に解決されるようにビルド パスを構成するだけです (例: Project > Properties > Android in Eclipse )。

于 2014-02-03T16:09:13.203 に答える