web-dev-qa-db-ja.com

Google Maps Android API v2-サンプルコードがクラッシュする

サンプルコード of Android 'Google Maps Android API v2'が動作しています。プロジェクトをビルドします。ただし、Galaxy Nexus(USBでラップトップに接続)でアプリを実行しようとすると、アプリがすぐにクラッシュします。

  • AndroidManifest.xmlで独自のMaps APIキーを入力しました
  • Android 4.1.2に対して構築しました

これはロギングです:

Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (66) 
Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed 
Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit> 
VFY: unable to resolve const-class 108 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity; 
VFY: replacing opcode 0x1c at 0x000d 
Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity; 
Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;) 
Shutting down VM 
threadid=1: thread exiting with uncaught exception (group=0x41ac9930) 
FATAL EXCEPTION: main 
Java.lang.ExceptionInInitializerError
at Java.lang.Class.newInstanceImpl(Native Method)
at Java.lang.Class.newInstance(Class.Java:1319)
at Android.app.Instrumentation.newActivity(Instrumentation.Java:1054)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2097)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2230)
at Android.app.ActivityThread.access$600(ActivityThread.Java:141)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1234)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:137)
at Android.app.ActivityThread.main(ActivityThread.Java:5039)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:511)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:793)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:560)
at dalvik.system.NativeStart.main(Native Method) 
Caused by: Java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity
at com.example.mapdemo.MainActivity.<clinit>(MainActivity.Java:97)
... 15 more

誰がこれを解決する方法や私が間違っているかもしれないことのヒントを持っていますか?

43
alexx

ベビーベッドシートを非常に注意深く従ってください。
https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw

特に、私はあなたがする必要があると思う:

  • 「google-play-services_lib」プロジェクトの実際のソースをインポートし、Androidライブラリとしてリンクします。
    • プロジェクト->プロパティ-> Android-> Library、Add-> google-play-services_lib(プロジェクトを右クリックして[プロパティ]を選択し、[Android]を選択できます)を使用してこれを行います。
    • notをプロジェクトの「Javaビルドパス」から依存プロジェクトとして追加してください。
  • Google-play-services.jarおよびAndroid-support-v4.jarをサンプルプロジェクトの「libs」フォルダーに追加し、「ビルドパス->ビルドパスの構成->ライブラリ」で「外部外部JAR」として追加します。 。

サンプルコードを使用するときに、まったく同じエラーが発生したため、この2番目の手順が必要であることがわかりました。実際のプロジェクトでcom.google.Android.gms.R$styleableNoClassDefFoundErrorを回避するには、最初のステップが必要でした。

また、サンプルコードが機能する前に、クリーンビルドを実行し、デバイスからアプリをアンインストールする必要がありました(以前のテスト試行から)。

78
Dan J

次のサンプルコードの手順 に従ってください。

「4」セクションをスキップし、以下の指示に従います。

  • 「libs」という名前のプロジェクトに新しいフォルダーを追加します
  • Google-play-services.jarフォームをコピーします。

    「Android-sdk-folder\extras\google\google_play_services\libproject\google-play-services_lib\libs」

    「libs」フォルダーへ->このフォルダー内のこのjarを右クリック->ビルドパス->ビルドパスに追加。

  • Android-support-v4.jarフォームをコピーします。

    「Android-sdk-folder\extras\Android\support\v4」

    「libs」フォルダーへ->このフォルダー内のこのjarを右クリック->ビルドパス->ビルドパスに追加。

「Android-sdk-folder」は通常、「C:\ Users\User_Name\Android-sdks」のようになります

26
David

私は同じ問題を抱えていました。問題を解決するために次のことをしました。

  1. プロジェクトの「プロパティ」に移動します。
  2. 「Java Build Path」を選択します
  3. [注文とエクスポート]タブを選択します
  4. 選択したプロジェクトの「src」および「gen」パスと依存関係がここに表示されます。

リストの順序は、最初に「src」、次に「gen」パスでした。これらを切り替えると、「gen」フォルダーが「src」の前にビルドされます

次に、リストされた各項目を「チェック」します

参照: Javaライブラリ)のコードのNoClassDefFoundError

14
John Oleynik

これは、プロジェクトのインポート方法に関する多くの混乱のために発生します。ドキュメント https://developers.google.com/maps/documentation/Android/intro#sample_code どの時点でも「プロジェクトをワークスペースにコピー」を選択しないでください。サンプルを実行するには、あなたが固執する必要があるもの。プレイサービスとサンプルにはこのオプションを選択しないでください。そのままにしておきます。

両方をインポートしたら、次を確認します。

  1. MainActivityプロジェクトを右クリックして、プロパティを選択します
  2. Androidに移動し、google-play-services-libの横に緑色のチェックマークが表示されていることを確認します(play services libはjarとして追加しないでください-代わりに=として追加する必要がありますAndroidライブラリ)
  3. Java Build Pathに移動し、librarysセクションの外部jar(Android-support-v4.jar)をインポートします。
  4. [重要] Java Build PathでOrder and Exportに移動し、Android-support-v4.jarの横にチェックマークが付いていることを確認します(デフォルトでは発生せず、上部に記載されているエラーが表示される理由)
  5. 変更を行った後は、プロジェクトをきれいにしてビルドしてください。そうすれば、うまく機能するものを修正しようとするのではなく、単純にプッシュされません。
2
kaskader
  1. サンプルコードの手順 に従ってください。
  2. そして、Javaこのようなビルドパスを設定します:enter image description here
1
nguyên
  1. 新しいワークスペースで同じサンプルコードを試してください。

  2. サンプルマッププロジェクトとgoogle play services-libプロジェクト(/ extras/google/google_play_services/libproject/google-play-services_lib)をコピーして貼り付け、新しい新しいワークスペースに貼り付けることもできます。

  3. SDKからの必要なJARファイルの追加を忘れないでください。 (「Android-support-v4.jar」は、「Android-sdk」ディレクトリの下の「/extras/Android/compatibility/v4/Android-support-v4.jar」にあります。)
0
beginner

私は同じ問題に直面し、解決できませんでした。最後に、別のマシンからサンプルプロジェクトフォルダを取得し、それを自分のマシンにコピーして、別のマシンから取得した新しいプロジェクトをロードしました。その後、すべてが正常に動作しています。 2つのサンプルプロジェクトを比較して問題を追跡しようとしましたが、できませんでした。とにかく、他のマシンから取得した新しいサンプルプロジェクトは正常に動作しています。

0
Nalaka

私はほとんど同じ問題を抱えていました。ファイル 'import-summary.txt'には答えがありました。私の場合、パス名にスペースを含むパスにEclipseプロジェクトをインポートしました。これにより、ウィザードで問題が発生します。新しいパスを作成しました。再インポートされたプロジェクト。次に、プロジェクトをビルド/再ビルドします。問題はありません。

0
user2380177