android.gms.maps.MapFragment를 인스턴스화 할 수 없습니다.


82

매우 간단한 활동으로 Google지도 android v2로 데모를 시도합니다. Google 페이지에서 코드를 복사합니다. https://developers.google.com/maps/documentation/android/start#adding_the_api_key_to_your_application

활동 :

package com.example.mapdemo;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

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

레이아웃 :

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/map"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  class="com.google.android.gms.maps.MapFragment"/>

페이지에 따라 API 키를 신청하고 다음과 같이 androidmanifest.xml 파일을 수정했습니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wenhai.driverschool"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <uses-permission android:name="android.permission.INTERNET" />

    <!-- add for map2 -->
    <permission
        android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <!-- External storage for caching. -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- Maps API needs OpenGL ES 2.0. -->
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyDVAF4WaVSVRDKJx87It8OSFP5txQcPabc" />

        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

또한 Eclipse의 google-play-services_lib에 내 앱을 참조합니다.

그러나 매번 다음과 같이 logcat에 오류가보고됩니다.

2-05 16:22:53.609: E/AndroidRuntime(21623): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wenhai.driverschool/com.wenhai.driverschool.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.os.Looper.loop(Looper.java:137)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.main(ActivityThread.java:4441)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.reflect.Method.invokeNative(Native Method)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.reflect.Method.invoke(Method.java:511)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at dalvik.system.NativeStart.main(Native Method)
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.setContentView(Activity.java:1835)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.performCreate(Activity.java:4465)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 11 more
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:581)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:549)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.onCreateView(Activity.java:4235)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 20 more
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:571)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 23 more

그 이유를 모르겠습니다.

내 프로젝트에 google-play-services.jar을 추가하면 다른 오류가보고됩니다.

12-05 16:34:23.269: E/AndroidRuntime(22638): FATAL EXCEPTION: main
12-05 16:34:23.269: E/AndroidRuntime(22638): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.onCreateView(Activity.java:4242)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.setContentView(Activity.java:1835)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.performCreate(Activity.java:4465)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.os.Looper.loop(Looper.java:137)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.main(ActivityThread.java:4441)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at java.lang.reflect.Method.invokeNative(Native Method)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at java.lang.reflect.Method.invoke(Method.java:511)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at dalvik.system.NativeStart.main(Native Method)

누구든지 이것에 대해 나를 도울 수 있습니까?


2
MapView에서 동일한 오류가 발생합니다. 라이브러리를 추가하고이 페이지에 설명 된대로 모든 작업을 수행했습니다. developers.google.com/maps/documentation/android/start 하지만이 모든 것이 저에게는 쓸모가 없었습니다.
jumper0k 2012

1
같은 오류 .. 모든 솔루션 ...
nilkash

1
저도 같은 오류가 있어요 및 :( 아직 좋은 해결책을 찾을 수 없습니다
리카르도 테로

나는 그것의 해결되지 않은 아직 생각으로 다음 단계를 참조하십시오 techhomeblog.wordpress.com/2013/02/23/...
Tofeeq 아마드

Eclipse에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Android 도구> 지원 라이브러리 추가를 선택합니다. 제 경우에는 ActionBarSherlock에서 가져온 오래된 버전이었습니다.
IgorGanapolsky 2013

답변:


86

IntelliJ IDEA (IntelliJ 12 용으로 업데이트 됨) :

  1. ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/src/dummy.java포함 하는 파일 을 만듭니다 class dummy {}.
  2. 파일-> 모듈 가져 오기-> ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
  3. 기존 소스에서 모듈 생성
  4. 다음-> 다음-> 다음-> 다음-> 마침
  5. 파일-> 프로젝트 구조-> 모듈-> YourApp
  6. +-> Module Dependency-> Google-play-services_lib ( +버튼은 대화 상자의 오른쪽 상단에 있습니다.)
  7. +-> Jars 또는 디렉토리->~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
  8. up/ down화살표를 사용하여 <Module source>목록의 맨 아래 로 이동 하십시오.

원하는 dummy.java경우 삭제할 수 있습니다 .

편집 : 잠시 동안 이것을 사용한 후 작은 결함 / 버그가 있음을 발견했습니다. IDEA는 디렉토리 .iml에서 프로젝트 파일 을 열 수 없다고 불평 할 google-play-services_lib것입니다.하지만 거기에 프로젝트가 있다고 말하지 않았음에도 불구하고 말입니다. 이런 일이 발생하면 프로젝트를 다시 빌드하면 적어도 문제가 다시 발생할 때까지 문제가 해결됩니다.


나를 위해 작동합니다. 감사!
kingtim 2013

3
안녕하세요, File > Import Module내 에서 옵션을 찾을 수 없습니다 Eclipse IDE. ... 제발 도와주세요
Rahmathullah M

이것은 우수한 IDE "IntelliJ IDEA"를위한 것입니다.
Timmmm 2013 년

2
답변 해 주셔서 감사합니다! 그러나 프로젝트에 모듈과 jar 종속성을 추가하는 것으로 충분했고 모든 것이 작동했습니다!
lomza 2013 년

3
Google Play 서비스 라이브러리가 "일부 IDE"를 지원하기 위해 "공식 더미 파일"로 업데이트되었으므로 더 이상 더미 파일을 추가 할 필요가 없습니다 (예 : IntelliJ 및 Android Studio에 대한 수정 사항).
Guardius 2013-06-26

33

최신 정보

더 나은 이해를 위해 Commonsware MapV2 코드 스 니펫을 따르십시오.

(옴니버스 에디션에 있음)

https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2

다음 스 니펫은 내 끝에서 잘 작동합니다 SupportMapFragment.

프로젝트 에 추가하는 것을 잊지 google-play-services.jar 마십시오.

MainActivity.java

package com.example.newmapview;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.SupportMapFragment;

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SupportMapFragment fragment = new SupportMapFragment();
        getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, fragment).commit();
    }
}

manifest.xml

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <permission
        android:name="com.example.newmapview.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.newmapview.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.newmapview.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="XXXXX" />
    </application>

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

</manifest>

결과는 다음과 같습니다.

여기에 이미지 설명 입력 이것이 도움이되기를 바랍니다.


안녕, 비풀 샤, 고마워. concole의 메시지를 좋아합니다. [2012-12-06 10:20:26-google-play-services_lib] google-play-services_lib.apk를 찾을 수 없습니다! 이 apk 누락으로 인해 오류가 발생하는지 여부를 모르겠습니다. google-play-services.jar을 참조하는 방법을 알려주세요. 아래 링크와 같이 추가하십시오 : developer.android.com/intl/zh-CN/tools/projects/… . 또는 아래와 같이 Eclipse에 추가하십시오. Propertyes-> java Build Path-> Projects, google-play-services_lib 프로젝트를 추가하십시오. 어느 쪽이 당신 편입니까? 감사.
mmm2006

@ mmm2006 Android 에뮬레이터에서이 응용 프로그램을 실행하고있을 수 있습니다. 확실하지 않지만 에뮬레이터에 Play 스토어 앱이 없기 때문에이 오류가 발생할 수 있습니다. 실제 장치에서 사용해보세요.
Vipul 2012

사실, 나는 그것을 내 휴대폰에서 실행합니다. 소니 폰.
mmm2006

안녕하세요 Vipul, MapFragment를 사용하여지도에 내 마커를 어떻게 표시 할 수 있습니까? 위도 및 경도 목록이 있고지도에 표시하고 싶고 MapView를 시도했지만 작동하지 않아 ItemizedOverlay를 사용할 수없고 MapFragment가 작동하므로 MapFragment에 여러 마커를 표시하는 방법이 있습니다. 가능하면 작동하는 코드가있는 링크를 제공하십시오.
Shrikant

@VipulShah : 당신은 바위입니다.이 오류가 발생하는 이유를 말씀해 주시겠습니까? 언젠가 작동하기 전에 튜토리얼 ---> dj-android.blogspot.in/2013/02/… 이제 동일한 코드가 작동하지 않기 때문입니다.
Dhaval Parmar 2013

23

레이아웃을 다음으로 바꾸십시오.

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/map"
       android:name="com.google.android.gms.maps.SupportMapFragment"
       android:layout_width="wrap_content"
       android:layout_height="match_parent" />

11 미만의 API에 대해 SupportMapFragment를 사용해야합니다!

Aurel


3
미안하지만 내 자리에서도 작동하지 않습니다. 이번에 오류보고 : 원인 : android.app.Fragment $ InstantiationException : 조각을 인스턴스화 할 수 없습니다. com.google.android.gms.maps.SupportMapFragment : 클래스 이름이 존재하고 공개이며 공개 된 빈 생성자가 있는지 확인합니다. jar에서 SupportMapFragment를 찾을 수 있지만 작동하지 않습니다. 이유를 모르겠습니다.
mmm2006

흠, 다음과 같은 작업이 필요한 것 같습니다. 1. Android SDK Mananger에서 Google Play 서비스 SDK를 다운로드합니다. 2. Eclipse에서 프로젝트 라이브러리를 가져옵니다. 3. 프로젝트에 라이브러리를 추가합니다. 4. 프로젝트에 android-support-v4.jar이 있는지 확인합니다 (Android SDK Manager에서도 사용 가능). 5. 조각을 만들고 이름 ( 'class = "com.google.android.gms.maps.MapFragment"/>'for SDK> = 11 및 'class = "com.google.android.gms.maps.MapFragment)을 추가합니다. SDK <11의 경우 "/> '). 6. 기기에서 샘플 코드를 시도하는 것을 잊지 마세요 (앱에 Google Play가 필요합니다!)
Aurel

ok. Google Play 서비스를 참조하려면이 가이드를 따라야합니다. developer.android.com/intl/zh-CN/tools/projects/... . 그러나 Google에서 제공하는 exmaple은 아직 작동 할 수 있습니다. :(
mmm2006

Framgament와 동등한 뷰가 조각 xml 파일 안에 넣는 것은 무엇입니까?
Harsha MV

1
@ mmm2006 : 당신 & 없다 "FragmentActivity"를 확장해야 "활동"그것은 작동해야하고 예외를 발생하지 않습니다 ..
비어

17

나는 나를 위해 일한 해결책을 찾는 데 며칠이 걸렸던 동일한 문제에 직면했습니다.

  1. 프로젝트를 삭제 google-play-services_lib(오른쪽 삭제 프로젝트 클릭)
  2. Google지도 데모 ( MainActivity제 경우에는)가 포함 된 프로젝트를 삭제하세요.
  3. 프로젝트 google-play-services_lib (extras \ google \ google_play_services \ libproject \ google-play-services_lib)를 작업 공간에 복사 한 다음 일반 프로젝트 (파일-> 가져 오기-> 기존 프로젝트를 workspase로 가져 오기)로 가져옵니다.
  4. 지도를로드하려는 프로젝트를 마우스 오른쪽 버튼으로 클릭-> Android-> 추가 (라이브러리 아래) google-play-services_lib

다음과 같은 내용이 표시되어야합니다.

주목

참고 : 다음과 같은 것이 없어야합니다 (프로젝트는 작업 공간에서 참조되어야 함).

여기에 이미지 설명 입력

문제는 tow 프로젝트가 동일한 라이브러리를 참조하고 있다는 것입니다.


Google Play 서비스를 Java 빌드 경로 라이브러리로 추가했지만 Android / Library 아래에 추가해야했습니다
marimaf 2013

10

이 시도

http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject

방금 Google 서비스 프로젝트를 추가하고 프로젝트 속성-> Android에 참조를 추가했습니다.


2
이것은 나에게 중요한 수정 사항이었으며 위의 다른 답변 중 어느 것도 도움이되지 않았습니다. 여기서 차이점은 실제로는 매우 미묘합니다. "Java Build Path"를 통해 종속 프로젝트로 추가했습니다. 실제로 "Android"메뉴를 통해 수행 했어야했습니다. 이 정보를 다른 답변 중 하나에 추가했습니다. stackoverflow.com/questions/13733911/…
Dan J

8
  1. 지금까지 데모는 다음 링크를 따라 작동 할 수 있습니다 .
  2. 예를 들어 데모에서도 작동 할 수 있습니다.

프로젝트의 libs 디렉토리에 두 개의 jar를 추가하십시오. 아래 정보를 따르십시오. 특히 다음 사항이 필요하다고 생각합니다.

  • "google-play-services_lib"프로젝트의 실제 소스를 가져 와서 Android 라이브러리로 연결합니다.
    • 프로젝트-> 속성-> Android-> 라이브러리, 추가-> google-play-services_lib를 통해이 작업을 수행합니다 (프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택한 다음 Android를 선택).
    • 나를 위해 작동하지 않는 프로젝트의 "Java Build Path"를 통해 종속 프로젝트로 추가하지 마십시오.
  • google-play-services.jar 및 android-support-v4.jar를 샘플 프로젝트의 "libs"폴더에 추가하고 "Build Path-> Configure Build Path-> Libraries"에서 "External External JARs"로 추가합니다. .

샘플 코드를 사용하려고 할 때와 똑같은 오류가 발생했기 때문에이 두 번째 단계가 필요하다는 것을 알았습니다. 첫 번째 단계는 실제 프로젝트에서 com.google.android.gms.R $ styleable의 NoClassDefFoundError를 피하기 위해 필요했습니다.

또한 샘플 코드가 작동하기 전에 클린 빌드를 수행하고 장치에서 앱을 제거해야했습니다 (이전 테스트 시도에서).

도와 주셔서 감사합니다.


3

아마도 당신은 이것을 강조해야합니다 :

참고 : Google Play 서비스는 Android 에뮬레이터에서 지원되지 않습니다. API를 사용하여 개발하려면 Android 휴대 전화 또는 태블릿과 같은 개발 기기를 제공해야합니다.

http://developer.android.com/google/play-services/setup.html

앱을 실행하고 디버깅 할 수있는 물리적 개발 기기를 제공해야합니다. 에뮬레이터를 사용하지 마십시오. 작동하지 않습니다.


3
OMG! 왜이 노트는 메인 페이지에서 너무 적고 모든 페이지에서 큰 빨간색이 아닌가? 나는 거의 하루 종일 그것을 실행하려고 노력했다!!!!
shmoula

이제 Android v4.2.2 이상을 실행하는 에뮬레이터에서 Play 서비스를 사용할 수 있습니다.
Brian White

2

에서 당신 MainActivity(또는 당신이 V2 맵을 넣어하려는 각 활동에) 당신이 확장해야 FragmentActivity또는 Activity중 하나를 사용할 SupportMapFragment하거나 MapFragment. MapFragmentAPI 12 이상을 대상으로하는 경우에만 클래스를 사용하십시오 . 그렇지 않으면 SupportMapFragment. 미묘한 차이이지만 오류가 발생합니다.


2

이제 Google지도가 Fragments 아래에 래핑되어 있으므로 Activity뿐만 아니라 FragmetActivity 에서 활동을 확장 하고 " supporrtMapFragment "를 사용하는 경우 지원 패키지에서만 Fragment를 가져 오는지 확인하세요 .


Google은 SupportMapFragment. ... 그것없이 작동하지 않습니다
Muzikant

1

Intellij Idea 프로젝트에서 google-play-services_lib와 google-play-services.jar를 프로젝트에 추가해야했습니다. 그리고 google-play-services_lib 프로젝트에서 google-play-services.jar도 추가하십시오. 그 후에 여기 에 설명 된대로 모든 작업을 수행했다면 애플리케이션이 작동해야합니다.


디렉토리 (클래스, jar 디렉토리, 소스 등)에 어떤 카테고리를 사용합니까?
Timmmm

1
Intellij Idea에서 모듈과 같은 google-play-services_lib를 추가하고 있습니다. 또한 Intellij Idea는 src 폴더가 비어 있기 때문에 모듈처럼 인식하지 못합니다. 기존 소스에서 모듈을 생성하고 프로젝트 구조의 프로젝트에 추가 한 후 모든 코드가 포함 된 Java 파일을 src 폴더에 추가해야합니다. 그런 다음 Java 파일을 지 웁니다.
jumper0k

1

이전 API와 다르기 때문에 조금 어려웠지만 해결책을 찾았습니다. Google은 여기서 무엇을해야하는지 말합니다 . 질문에 따라 com.google.android.gms클래스 가 필요 하므로이 링크google play services 와 같이 프로젝트에 추가해야하는 라이브러리 인 을 설정 해야합니다 . sdk 폴더에있는 것이 아니라 프로젝트 라이브러리의 복사본을 가져 오는 것이 매우 중요 합니다. 완료되면 Google의 튜토리얼이 완벽하게 진행됩니다.google-play-services_lib


또한 어떤 API를 사용하고 있는지도 중요합니다. api 10 이하에는 지원 라이브러리가 필요합니다. developer.android.com/tools/extras/support-library.html 정확히 오류가 있습니까?
joseph.dev89 2012

1

앞서 언급 한 많은 것 외에도 주문 및 내보내기에서도 .jar를 표시하는 것이 중요했습니다. 내가 말할 수있는 한, 일반적으로 언급되지 않았고 나에게 중요했습니다.

주문 및 내보내기에서 lib 표시


1

이 제안과 관련이 있습니다 : https://stackoverflow.com/a/20215481/3080835

또한 Application매니페스트의 요소에 이것을 추가해야했습니다 .

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

완벽하게 작동했습니다.


1

build.gradle에이 종속성 추가

compile 'com.google.android.gms:play-services:6.5.87'

이제 작동합니다

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="388dp"
        android:layout_weight="0.40" />
</LinearLayout>

0

드라이브 관련 가져 오기를 처리하려면 Google Drive SDK. 몇 가지 큰 것이 있으므로 앱에 맞게 개별적으로 추가 할 수 있습니다.

그래도 문제가 해결되지 않으면 com.google.android.gms.* imports,the Google Play Services add-on needs to be installed (from Extras -> Google Play Services in the SDK Manager) and google-play-services.jar needs to be added to your build path.

편집하다:

이 경우 다음 항아리가 필요했습니다.

google-api-services-drive-v2-rev1-1.7.2-beta.jar

google-http-client-1.10.3-beta.jar

google-http-client-android2-1.10.3-beta.jar

google-oauth-client-1.10.1-beta.jar

google-api-client-android2-1.10.3-beta.jar

google-api-client-1.10.3-beta.jar



0

실제로 google-play-services_lib를 빌드하는 것을 잊지 마세요 !! 이것이 "Google Play를 찾을 수 없습니다 .... apk"를 표시하는 이유입니다. 나를 위해 Eclipse에서는 다른 해킹이 필요하지 않았지만 Java 빌드 경로 또는 프로젝트 참조 등이 아닌 Android 하위 메뉴에서 프로젝트를 참조하기 위해 필요했습니다. 수동으로 배치 된 항아리가 없었고 실제로 필요한 것도 없습니다.


0

Eclipse에서는 단순히 jar를 추가하는 대신 Google Play 서비스를위한 별도의 프로젝트를 만들고 Android 프로젝트에서 lib로 참조해야합니다. 내 컴퓨터에서 D : \ adt-bundle-windows-x86-20130219 \ sdk \ extras \ google \ google_play_services \ libproject \ google-play-services_lib에서 직접 Google Play 서비스 Eclipse 프로젝트를 가져 와서 Lib 프로젝트로 설정했습니다. 내 Android 프로젝트에서 참조 할 수 있습니다.


0

동일한 튜토리얼에 명시되어 있습니다.

아래 코드는 Android API 12 이상을 대상으로하는 애플리케이션에서 설정을 테스트하는 데만 유용합니다.

최소 SDK 버전을 12로 변경하면 작동합니다.

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

Haven은 아직 이전 버전의 API에 대한 Aurel의 해결 방법을 시도했습니다.


0

MapFragment를 사용하는 경우 FragmentActivity를 사용할 수 없습니다 (SupportMapFragment는이 환경에서 잘 작동합니다). 나는 그것을 포기할 준비가되어 있었다.


0

첫 번째 단계 http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject 두 번째 단계 http://developer.android.com/google/play-services/setup.html 해당 페이지에는 참고하지만 우리는주의를 기울이지 않았습니다.

참고 : 소스 트리에 복사 한 라이브러리의 사본을 참조해야합니다. Android SDK 디렉토리에서 라이브러리를 참조해서는 안됩니다.

그러나 나는 그것이 문서화의 좋은 방법이 아니라고 생각합니다. :)


0

이것은 일부에게 도움이 될 수 있습니다. 나는 두 개의 프로젝트를 가지고 있는데, 하나는 Google의 데모 사본이고 잘 작동했습니다. 다른 하나는 기존 프로젝트에 복사했는데 전혀 실행할 수 없었습니다. 그리고 두 번째 실패한 경우 위에서 설명한 오류 메시지가 표시되었습니다.

내 문제는 라이브러리를 다시 빌드하고 여러 번 가져 왔지만 활성화되지 않았기 때문입니다. 프로젝트-> 속성-> Java 빌드 경로-> 주문 및 내보내기 탭을 마우스 오른쪽 버튼으로 클릭합니다. 실패한 프로젝트에서 "Android Private Libraries"탭이 선택 취소되었습니다.

일단 활성화하면 프로젝트가 잘 작동했습니다.


0

위의 모든 사람들이 말한 모든 것을 가지고 super.onCreate(savedInstanceState);oncreate 메소드에서 as first 명령을 호출하여 오류를 해결했습니다 . 메서드의 마지막 줄이되기 전에. : | 하루 종일 낭비되었습니다.


0

이 문제는 Google Play 서비스를 업데이트하고 google-play-service-lib 프로젝트를 종속성으로 추가하고 있는지 확인합니다. 이제 코드 변경없이 작동하지만 여전히 "Google Play 서비스 리소스를 찾을 수 없습니다. . 프로젝트 구성을 확인하여 리소스가 포함되어 있는지 확인하십시오. " 그러나 이것은 당신이 setMyLocationEnabled (true)했을 때만 발생합니다. 그 이유를 아는 사람이 있습니까?


0

나는 진정한 해결책을 얻지 못했지만 다음 작업을 수행 한 후에 해결합니다.
-google-play-services_lib를 가져올 때 '작업 공간에 프로젝트 복사'를 선택합니다.-
minSdkVersion을 13 미만으로 설정하지 마십시오
.-테마 오류가 발생하면 시도해보십시오. 레이아웃 테마를 시스템 테마로 변경
-처음부터 프로젝트를 다시 생성하거나 어딘가에서 가져온 경우 모든 것을 되돌립니다.


0

동일한 문제가 발생하여 SDK에서 Play 서비스를 설치했는데 모든 문제가 사라졌습니다.


0

나는 활동에 썼다
import com.google.android.gms.maps.SupportMapFragment;

Eclipse가 빨간색 아이콘을주었습니다> 클릭> 프로젝트 설정 수정 ..> 아카이브 추가 google-play-services.jar

그리고 마침내 그것은 작동했습니다!!



0

Windows 7 64 비트 컴퓨터에서 x86 용 Android SDK를 사용하는 동안이 문제가 발생했습니다. Android SDK 64 비트 버전을 다운로드하고 Eclipse에서 Window> Preferences> Android> SDK 위치를 확인하고 문제가 발생하지 않도록했습니다.


0

주의 깊게 읽으십시오

모든 것이 Google 코드와 동일하게 작동하면 내 경우에 매니페스트 파일을 확인하십시오. 지역 키와 맵 키를 추가했기 때문에 예외가 발생합니다.

참고-매니페스트 파일에 두 개의 키를 추가하지 마십시오. 맵 키 제거

meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/google_maps_key"/>

이 코드를 추가하십시오.

 <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/auto_location"/>

 <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version"/>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.