无法实例化android.gms.maps.MapFragment


82

我尝试通过非常简单的活动使用Google Maps 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中遇到了相同的错误。我添加了该库,并且按照本页developer.google.com/maps/documentation/android/start所述进行了所有操作,但是所有这些对我来说都是无用的。
jumper0k 2012年

1
同样的错误..任何解决方案...
nilkash 2013年

1
我遇到了相同的错误,找不到任何好的解决方案:(
Ricardo Otero 2013年

对于看到这些步骤,因为我猜它仍然悬而未决techhomeblog.wordpress.com/2013/02/23/...
Tofeeq艾哈迈德

尝试在Eclipse中右键单击您的项目,选择Android工具>添加支持库。就我而言,这是从ActionBarSherlock提取的陈旧版本。
IgorGanapolsky

Answers:


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. +->模块依赖性-> Google-play-services_lib(该+按钮位于对话框的右上角。)
  7. +->文件夹或目录->~/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有时会抱怨无法.imlgoogle-play-services_lib目录中打开项目文件,尽管您从未告诉过它那里没有项目。如果发生这种情况,则重建项目可以解决问题,至少要等到问题回来。


为我工作。谢谢!
kingtim

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

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>

这是结果

在此处输入图片说明 希望这会有所帮助。


嗨,Vipul Shah,谢谢。我喜欢来自concol的消息:[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 store应用。请在实际设备上尝试。
Vipul 2012年

实际上,我在手机中运行它。一部索尼手机。
mmm2006

嗨Vipul,您能告诉我,如何使用MapFragment在地图上显示标记?我有一个经度和纬度列表,我想在地图上显示它们,我尝试了MapView但对我不起作用,所以我不能使用ItemizedOverlay,MapFragment可以工作,因此如何在MapFragment上显示多个标记。如果可能,请提供一个包含有效代码的链接。
Shrikant 2012年

@VipulShah:你是岩石。能否告诉我为什么会出现此错误,因为在一段时间之前,我已经开发了一些tututial ---> dj-android.blogspot.in/2013/02/…现在相同的代码无法正常工作。
Dhaval Parmar

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下使用SupportMapFragment for API!

奥雷尔


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管理器中也有)。5.创建一个片段,并为SDK> = 11添加名称('class =“ com.google.android.gms.maps.MapFragment” />“和'class =” com.google.android.gms.maps.MapFragment SDK <11的“ />”。6.别忘了在设备中尝试示例代码(您的应用需要Google Play!)
Aurel 2012年

好的,我发现我必须遵循此指南来引用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)复制到您的工作区中,然后将其作为常规项目导入(文件->导入->现有项目到workpase中)
  4. 右键点击您的项目(要在其中加载地图)-> Android->添加(在库中)google-play-services_lib

您应该会看到类似以下内容的内容:

注意

注意:您不应该有这样的东西(项目应该从您的工作空间中引用):

在此处输入图片说明

我认为问题在于两个项目都引用了相同的库


我将Google Play服务添加为Java构建路径库,但需要在Android / Library下添加它
marimaf

10

试试这个

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

我刚刚添加了Google服务项目,并在我的项目属性-> Android中添加了参考


2
这对我来说是关键的解决方法,上述其他答案均无济于事。实际上,这里的区别非常微妙-我实际上是应该通过“ Android”菜单通过“ Java Build Path”将其添加为从属项目的。我添加了信息,以我的其他答案之一:stackoverflow.com/questions/13733911/...
丹Ĵ

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”文件夹中,然后在“构建路径->配置构建路径->库”中将它们添加为“外部外部JAR”。 。

我发现第二步是必要的,因为在尝试使用示例代码时遇到了与您完全相同的错误。第一步是必须避免在我的真实项目中的com.google.android.gms.R $ styleable中出现NoClassDefFoundError。

在样例代码起作用之前,我还需要执行“干净构建”并从设备(通过较早的测试尝试)中卸载应用程序。

非常感谢您的帮助。


3

也许您必须突出这一点:

注意:Android模拟器不支持Google Play服务-要使用API​​进行开发,您需要提供开发设备,例如Android手机或平板电脑。

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

您必须提供一个可以在其上运行和调试应用程序的物理开发设备。不要使用模拟器。将无法正常工作。


3
我的天啊!为什么此注释在主页上这么少,而在每一页上却不大红色?我几乎整天都忙着试图使它运行!!!!
shmoula

Play服务现在可在运行Android v4.2.2或更高版本的模拟器上使用。
Brian White

2

在您MainActivity(或您要放置v2地图的每个活动中)中,您必须扩展FragmentActivityActivity或者您要使用SupportMapFragment或just MapFragmentMapFragment仅当您针对API 12及更高版本时才使用类。否则,请使用SupportMapFragment。这是一个细微的差异,但是会导致错误。


2

由于Google地图现在包裹在Fragments下,因此请从FragmetActivity扩展您的活动,而不仅仅是Activity,并确保是否使用“ supporrtMapFragment ”,那么您仅从支持包中导入Fragment 。


Google应该确实修复使用的基本示例SupportMapFragment。没有它就
行不通

1

在我的Intellij Idea项目中,我必须将google-play-services_lib和google-play-services.jar都添加到该项目中。并且在google-play-services_lib项目中也添加google-play-services.jar。在此之后,如果你做了所有的事情,这说明这里,对了,你的应用程序应该是工作。


您对目录使用什么类别(类,jar目录,源等)?
Timmmm 2012年

1
在Intellij Idea中,我像模块一样添加了google-play-services_lib。而且,Intellij Idea无法像模块一样识别它,因为src文件夹为空。您应该将带有任何代码的Java文件添加到src文件夹中,然后从现有资源创建模块并将其添加到项目结构的项目中。然后清除java文件。
jumper0k 2012年

1

这有点困难,因为它与以前的API不同,但是我找到了解决方案。谷歌说,做什么在这里; 根据这个问题,我们需要com.google.android.gms类,所以有必要设置类google play services,这只是一个库,我们必须像此链接一样将其添加到项目中。导入项目库的副本而google-play-services_lib不是sdk文件夹中的副本非常重要。一旦完成,来自Google的教程就可以完美进行。


同样重要的是,您使用的是哪个api,api 10或以下的api需要支持库developer.android.com/tools/extras/support-library.html到底是什么错误?
joseph.dev89

1

除了前面提到的许多内容外,对我来说,在“订购和出口”中也标记.jar很重要。据我所知,通常不会被提及,对我而言至关重要。

在订单和出口中标记库



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

要处理与Drive相关的导入,您需要从中添加一些jar Google Drive SDK。有一些大的,所以您可能要单独添加它们以适合您的应用程序。

如果仍不能解决com.google.android.gms.* importsthe 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上不需要其他技巧,而是从Android子菜单中引用项目,而不是从Java构建路径,项目引用或其他任何内容引用。没有手动放置的广口瓶,实际上我什么也不需要。


0

在Eclipse中,有必要为Google Play服务创建一个单独的项目,并将其作为Android项目中的lib引用,而不是简单地将jar添加到其中。在我的计算机中,我直接从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" />

还没有针对较旧版本的API尝试过Aurel的解决方法。


0

我认为值得一提的是(我花了一个多小时才拔掉头发),如果您使用的是MapFragment,则不能使用FragmentActivity(在这种环境下,SupportMapFragment可以正常工作)。我正准备放弃它。



0

这可能对某些人有帮助。我有两个项目,一个是Google演示的副本,并且运行良好。我将另一个复制到现有项目中,但根本无法运行它。在第二个失败的消息中,我收到了上述错误消息。

我的问题是由于没有启用库,即使我重新构建,多次导入等也是如此。右键单击项目->属性-> Java构建路径->订单和导出选项卡。在失败的项目中,未选中“ Android Private Libraries”选项卡。

一旦启用它,该项目就可以正常运行。


0

我已经掌握了上面每个人所说的一切,并通过简单地super.onCreate(savedInstanceState);在oncreate方法中调用as作为第一条指令来解决了该错误 ;在方法的最后一行之前。:| 整天都浪费了。


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在“窗口”>“首选项”>“ 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"/>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.