web-dev-qa-db-ja.com

java.lang.NoClassDefFoundError:com.google.Android.gms.R $ styleable in android

AndroidでGoogleマップv2を表示するデモを試しました。

Javaコードは、

package com.example.gpslocator;

import Android.os.Bundle;
import Android.app.Activity;
import Android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}    
}

Xmlコードは、

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
>

<fragment 
      Android:id="@+id/map"
      Android:layout_width="match_parent"
      Android:layout_height="match_parent"
      Android:name="com.google.Android.gms.maps.MapFragment"/>
</LinearLayout>

Manifest.xmlにAPIキーを追加しました。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.gpslocator"
Android:versionCode="1"
Android:versionName="1.0" >

<uses-sdk
    Android:minSdkVersion="3"
    Android:targetSdkVersion="17" />

<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES" />
<!--
 The following two permissions are not required to use
 Google Maps Android API v2, but are recommended.
-->
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />

<permission
    Android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
    Android:protectionLevel="signature" />

<uses-permission Android:name="com.example.mapdemo.permission.MAPS_RECEIVE" />

<uses-feature
    Android:glEsVersion="0x00020000"
    Android:required="true" />

<application
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme" >
    <activity
        Android:name="com.example.gpslocator.MainActivity"
        Android:label="@string/app_name" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <meta-data
        Android:name="com.google.Android.maps.v2.API_KEY"
        Android:value="MY_API_KEY" />
</application>

</manifest>

アプリケーションを実行しようとすると、突然終了します。デバッグすると、「Java.lang.NoClassDefFoundError:com.google.Android.gms.R $ styleable」というエラーが表示されました。アプリケーションにgoogle-play-services.jarファイルを追加しました。

Logcatは、

04-09 05:33:53.677: E/Trace(1053): error opening trace file: No such file or directory (2)
04-09 05:33:53.807: W/ActivityThread(1053): Application com.example.gpslocator is waiting for the debugger on port 8100...
04-09 05:33:53.878: I/System.out(1053): Sending WAIT chunk
04-09 05:33:54.207: I/dalvikvm(1053): Debugger is active
04-09 05:33:54.288: I/System.out(1053): Debugger has connected
04-09 05:33:54.288: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:54.487: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:54.697: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:54.897: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:55.097: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:55.297: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:55.498: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:55.708: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:55.907: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:56.167: I/System.out(1053): waiting for debugger to settle...
04-09 05:33:56.367: I/System.out(1053): debugger has settled (1344)
04-09 05:34:06.097: W/dalvikvm(1053): VFY: unable to resolve static field 867 (MapAttrs) in Lcom/google/Android/gms/R$styleable;
04-09 05:34:06.097: D/dalvikvm(1053): VFY: replacing opcode 0x62 at 0x000e
04-09 05:40:21.278: D/AndroidRuntime(1053): Shutting down VM
04-09 05:40:21.278: W/dalvikvm(1053): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
04-09 05:40:21.398: E/AndroidRuntime(1053): FATAL EXCEPTION: main
04-09 05:40:21.398: E/AndroidRuntime(1053): Java.lang.NoClassDefFoundError: com.google.Android.gms.R$styleable
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.google.Android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.google.Android.gms.maps.MapFragment.onInflate(Unknown Source)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.app.Activity.onCreateView(Activity.Java:4716)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:680)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:746)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.view.LayoutInflater.inflate(LayoutInflater.Java:489)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.view.LayoutInflater.inflate(LayoutInflater.Java:396)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.view.LayoutInflater.inflate(LayoutInflater.Java:352)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.Android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.Java:270)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.app.Activity.setContentView(Activity.Java:1881)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.example.gpslocator.MainActivity.onCreate(MainActivity.Java:12)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.app.Activity.performCreate(Activity.Java:5104)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1080)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2144)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2230)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.app.ActivityThread.access$600(ActivityThread.Java:141)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1234)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.os.Handler.dispatchMessage(Handler.Java:99)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.os.Looper.loop(Looper.Java:137)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Android.app.ActivityThread.main(ActivityThread.Java:5041)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Java.lang.reflect.Method.invokeNative(Native Method)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at Java.lang.reflect.Method.invoke(Method.Java:511)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:793)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:560)
04-09 05:40:21.398: E/AndroidRuntime(1053):     at dalvik.system.NativeStart.main(Native Method)
04-09 05:40:26.487: I/Process(1053): Sending signal. PID: 1053 SIG: 9

プロパティ内-> Android->

enter image description here

どなたか助けてください。参照がありませんか?

13
Mahe

ここで答えを見てください:
GoogleマップAndroid API v2-サンプルコードがクラッシュします
質問には別の例外がリストされていますが、回答には具体的な問題が具体的に示されています。

具体的には、google-play-services_libprojectとしてインポートすることが重要です。
File > Import > Android > Existing Android Code Into Workspaceを選択し、[次へ]をクリックします。
[参照...]を選択し、[Android-sdk-folder]/extras/google/google_play_services/libproject/google-play-services_libと入力して、[完了]をクリックします。
(「サンプルコード」の https://developers.google.com/maps/documentation/Android/intro を参照)
次に、リンクされた回答の指示に従います。

  • 「google-play-services_lib」プロジェクトの実際のソースをインポートし、>Androidライブラリとしてリンクします。
    • これは、プロジェクト->プロパティ-> Android->ライブラリ、追加-> google-play-services_lib(プロジェクトを右クリックして[プロパティ]を選択し、次に[Android]を選択します)で行います。
    • しないでくださいしないでくださいプロジェクトの「Javaビルドパス」を介して依存プロジェクトとして追加しますが、私にとってはうまくいきませんでした。
29
Alexander

小切手 AndroidManifest.xml google-play-services_libプロジェクトのファイル。する必要があります:

package="com.google.Android.gms"
6
Artem

同じ問題があります。

しかし、私がやったのは、com.google.Android.gmsバージョンコードthis 3265130を使用したことです。

Com.google.Android.gmsバージョンコードthis 4452000を使用するのではなく、これは最新の問題です。問題が何であるかわかりませんが、私にとってはその作業です。

[アレクサンダーによって与えられた手順に従ってください]

新しいアップデートでうまく動作するかもしれません。

enter image description here

新しいアップデートでうまく動作するかもしれません。

enter image description here

1
Sophia

google-play-services_libをインポートするときは、「プロジェクトをワークスペースにコピーする」にチェックを入れます。わたしにはできる!

1
Ellison Yang

同じ問題がありましたが、google-play-services_libプロジェクトを右クリックして更新することで解決できました。何らかの理由で、プロジェクトがEclipseと同期されず、エラーが発生していました。

1
yiati

その地図には多くの問題がありました。しかし、最終的には成功し、ビルドします!私はEclipseを使用せず、単にコマンドラインを使用します。最初に、google-play-services_lib/libsからmyProject/libs /ファイルにコピーし、ant debugを実行するだけだと思います... Android emulatorにインストールした後、エラーJava .lang.NoClassDefFoundError:com.google.Android.gms.R $ styleable

翌日以降の時間検索ソリューション:

1)最初に、カタログsdk/extras/google /.../ google-play-services_libをmyProjectカタログにコピーします。

2)ユーザーdzeikeiが言ったようにAndroid update project --target <your target> -p myProject/google-play-services_libを実行します(ターゲットexecをチェックするには:Android list target

3)myProjectフォルダーの「project.properties」ファイルを編集し、この行を最後のAndroid.library.reference.1 = google-play-services_libに追加するか、Android update project --target Android-19 --path myProject --library myProject/google-play-services_libを実行します

4)ant cleanant debug ....しかし、いくつかのエラーがありました。 nullなどを返す(頭痛を起こす)。しかしその後、antはフォルダーmyProject/google-play-services_libにbinフォルダーとgenフォルダーを作成します

5)年齢の多くの解決策を探して、antデバッグがエラーを返した理由を見つけた後、最終的に断片化し、myProject/google-play-services_lib /からmyProject/binとmyProject/genにカタログbinとgenをコピーします

6)次に、以前にポイント3で追加した行を削除します。#Android.library.reference.1 = google-play-services_libの上に、ファイルmyProject/google-play-services_lib/libs/google-play-services.jarをコピーします。 myProject/libs/google-play-services.jar

7)ant debugを実行します

adb install -r bin/myProject-debug.apk

そして最後に、Android emulator :)上の私のprojectApplicationでGoogleマップを見ました

もちろん、API_KEYのような他のstufや、プロジェクトをコンパイルする前に行ったGoogleマップのチュートリアルからの追加と許可。 promtなしで地図を見るには、例えば。 「Instal Goodle Play Services」は、すでにインストールされているGoogleサービスでエミュレータを使用します。 AVD ManagerリストからGoogle API(Google Inc.)を使用しました。これがあなたのお役に立てば幸いです。

0
ferfluchte

google-play-services_libプロジェクトへのファイルパスには、[A-Z,a-z]ではなくÄÖÜのみを含める必要があります。新規にインポートするよりもD:\google-play-services_lib\に移動しましたが、正常に機能します!

英語すみません;-)

0
Svendvd

プロジェクトgoogle-play-services_libをIDEにインポートした場合は、そのプロパティを確認することを忘れないでください。google-play-services_libは、同じバージョンのAndroidプロジェクトで使用するSDK。たとえば、プロジェクトとgoogle-play-servicesはどちらもAndroid 4.4.2。でビルドされます。その後、libが正しく構築されました。

最後に、次のメタタグを<application> ... </application>タグ内のAndroidManifest.xmlに追加する必要があります。

<meta-data
        Android:name="com.google.Android.gms.version"
        Android:value="@integer/google_play_services_version" />
0
Alex

John Oleynikのステップを見てください:www.stackoverflow.com/a/15709686/20146。それでうまくいきました。

0
viktor0710

google-play-services_libとデモプロジェクトの両方をワークスペースにインポートします。 Android-support-v4.jarをデモプロジェクトの「libs」フォルダーにコピーします。次に、プロジェクトのプロパティ-> Android->ライブラリ」、そしてgoogle-play-services_libを追加します

0
user2739528