短縮版
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ですが、そこにはほとんど情報がありません。
依存関係がありませんか? もしそうなら、どこでそれを入手するか、またはどのように生成しますか?
ありがとう!