无法实例化 android.gms.maps.MapFragment
Posted
技术标签:
【中文标题】无法实例化 android.gms.maps.MapFragment【英文标题】:Unable instantiate android.gms.maps.MapFragment 【发布时间】:2012-11-23 01:04:09 【问题描述】:我尝试使用非常简单的活动使用 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_
android:layout_
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 ComponentInfocom.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)
有人可以帮我解决这个问题吗?
【问题讨论】:
我在使用 MapView 时遇到了同样的错误。我添加了库,并按照此页面 developers.google.com/maps/documentation/android/start 中的描述完成了所有操作,但所有这些对我来说都没用。 同样的错误..任何解决方案... 我遇到了同样的错误,还没有找到任何好的解决方案:( 查看这些步骤,因为我猜它尚未解决techhomeblog.wordpress.com/2013/02/23/… 尝试在 Eclipse 中右键单击您的项目,选择 Android 工具 > 添加支持库。就我而言,它是从 ActionBarSherlock 中提取的旧版本。 【参考方案1】:在 IntelliJ IDEA 中(针对 IntelliJ 12 更新):
-
创建一个包含
class dummy
的文件~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/src/dummy.java
。
文件->导入模块-> ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
从现有源创建模块
下一步->下一步->下一步->下一步->完成
文件->项目结构->模块->YourApp
+->Module Dependency->Google-play-services_lib(+ 按钮在对话框的右上角。)
+->罐子或目录->~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
使用上/下箭头将<Module source>
移动到列表底部。
如果你愿意,你可以删除dummy.java
。
编辑:使用了一段时间后,我发现有一个小缺陷/错误。 IDEA 有时会抱怨无法打开google-play-services_lib
目录中的.iml
项目文件,尽管事实上您从未告诉它那里有一个项目。如果发生这种情况,重建项目可以解决问题,至少在它恢复之前是这样。
【讨论】:
嗨,我在Eclipse IDE
中找不到File > Import Module
选项。请帮助我...
这是针对高级IDE“IntelliJ IDEA”的。
感谢您的回答!但是我在项目中添加模块和jar依赖就足够了,一切正常!
对于 Intellij 12 中的第 6 步,+ 按钮位于第三个窗格下方的左下方。
您不再需要添加虚拟文件,因为 Google Play 服务库已更新为“官方虚拟文件”以支持“某些 IDE”(即他们对 IntelliJ 和 Android Studio 进行了修复) .【参考方案2】:
更新
请关注 Commonsware MapV2 代码 sn-ps 以获得更好的理解。
(出现在综合版中)
https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2
在我的最后,跟随 sn-p 工作正常。我选择使用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,谢谢。我喜欢来自 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 我担心你可能在安卓模拟器上运行这个应用程序。我不确定,但你可能会遇到这个错误,因为模拟器上没有 Play 商店应用程序。在实际设备上试试。 事实上,我在手机中运行它。一部索尼手机。 嗨 Vipul,你能告诉我,如何使用 MapFragment 在地图上显示我的标记?我有一个纬度和经度列表,我想在地图上显示它们,我尝试了 MapView 但对我不起作用,所以我不能使用 ItemizedOverlay,MapFragment 工作,所以如何在 MapFragment 上显示多个标记。如果可能,请提供一个包含有效代码的链接。 @VipulShah:你是摇滚。你能告诉我为什么会出现这个错误,因为在它工作之前我已经开发了一些教程 ---> dj-android.blogspot.in/2013/02/… 现在相同的代码不起作用。跨度> 【参考方案3】:尝试将您的布局替换为:
<?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_
android:layout_ />
11岁以下需要使用SupportMapFragment for API!
奥雷尔
【讨论】:
对此很抱歉,但它也不能代替我。这次报错:Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.SupportMapFragment: 确保类名存在,是公开的,并且有一个公开的空构造函数。我可以在 jar 中找到 SupportMapFragment,但它无法工作。我不知道原因。 嗯,看来您需要这样做: 1. 在Android SDK Mananger 上下载Google Play Services SDK。 2、在Eclipse中导入项目库。 3. 将库添加到您的项目中。 4. 确保您的项目中有 android-support-v4.jar(也可在 Android SDK 管理器中找到)。 5. 创建一个片段并添加名称 ('class="com.google.android.gms.maps.MapFragment"/>' for SDK >= 11 and 'class="com.google.android.gms.maps.MapFragment "/>' 用于 SDK 好的。我发现我必须按照本指南来推荐谷歌播放服务。 developer.android.com/intl/zh-CN/tools/projects/…。但是谷歌提供的例子现在可以工作了。 :( 知道什么是 View Equivalent to the Framgament 将其放入片段 xml 文件中? @mmm2006:你需要扩展“FragmentActivity”而不是“Activity”然后它应该可以工作并且不会抛出异常..【参考方案4】:我遇到了同样的问题,我花了两天时间才找到适合我的解决方案:
-
删除项目
google-play-services_lib
(右键项目删除)
删除包含 Google 地图演示的项目(在我的例子中为 MainActivity
)(如果有)
将项目 google-play-services_lib(extras\google\google_play_services\libproject\google-play-services_lib) 复制到您的工作区,然后将其作为常规项目导入(文件->导入->现有项目到工作区)
右键单击您的项目(要在其中加载地图)-> Android -> 添加(在库下)google-play-services_lib
你应该看到这样的东西:
注意:你不应该有这样的东西(项目应该从你的工作区引用):
我认为问题在于两个项目引用了同一个库
【讨论】:
我将google play服务添加为Java构建路径库,但需要在Android/Library下添加【参考方案5】:试试这个
http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject
我刚刚添加了google服务的项目,在我的项目属性中添加了引用->Android
【讨论】:
这对我来说是关键的修复,上面的其他答案都没有帮助。这里的区别实际上是非常微妙的——我是通过“Java Build Path”将它添加为一个依赖项目,而实际上我应该通过“Android”菜单来添加它。我已将该信息添加到我的其他答案之一:***.com/questions/13733911/…【参考方案6】:-
现在demo可以关注this link:
例如demo,也可以:
在项目的 libs 目录中添加两个 jar。按照以下信息。特别是,我认为您需要:
导入“google-play-services_lib”项目的实际源代码并将其链接为 Android 库。 通过项目 -> 属性 -> Android -> 库,添加 -> google-play-services_lib 执行此操作(您可以右键单击您的项目并选择属性,然后选择 Android)。 不要通过“Java 构建路径”为您的项目添加它作为依赖项目,这对我不起作用。 将 google-play-services.jar 和 android-support-v4.jar 添加到示例项目中的“libs”文件夹中,并在“构建路径->配置构建路径”中将它们添加为“外部外部 JAR”- > 图书馆”。我发现第二步是必要的,因为我在尝试使用示例代码时遇到了与您完全相同的错误。第一步是避免在我的真实项目中出现 com.google.android.gms.R$styleable 中的 NoClassDefFoundError。
在示例代码运行之前,我还需要执行干净构建并从设备上卸载应用程序(来自早期的测试尝试)。
非常感谢您的帮助。
【讨论】:
【参考方案7】:也许你必须强调这一点:
注意:Android 模拟器不支持 Google Play 服务 - 要使用 API 进行开发,您需要提供开发设备,例如 Android 手机或平板电脑。
http://developer.android.com/google/play-services/setup.html
您必须提供可以运行和调试应用的物理开发设备。不要使用模拟器。不会工作。
【讨论】:
天哪!为什么这个注释在主页上很少,而在每一页上都不是大红色?我几乎一整天都在试图让它运行!!!! Play Services 现在可在运行 Android v4.2.2 或更高版本的模拟器上使用。【参考方案8】:在您的MainActivity
中(或在您想要放置 v2 地图的每个活动中)您必须扩展 FragmentActivity
或 Activity
或者您想使用 SupportMapFragment
或只是 MapFragment
。仅当您的目标是 API 12 及更高版本时才使用 MapFragment
类。否则,请使用SupportMapFragment
。这是一个微妙的差异,但它会产生错误。
【讨论】:
【参考方案9】:由于 Google 地图现在被包裹在 Fragments 下,因此从 FragmetActivity 扩展您的 Activity 而不仅仅是 Activity 并确保如果您使用“supportMapFragment”然后您是从 FragmetActivity 导入 Fragment strong>仅支持软件包。
【讨论】:
Google 应该真正修复基本示例以使用SupportMapFragment
。没有它就不行……【参考方案10】:
在我的 Intellij Idea 项目中,我必须将 google-play-services_lib 和 google-play-services.jar 添加到项目中。并在 google-play-services_lib 项目中添加 google-play-services.jar 。在那之后,如果你做了所有事情,描述了here,对,你的应用程序应该可以工作了。
【讨论】:
你用什么分类的目录(类、jar目录、源码等)? 在 Intellij Idea 中,我将 google-play-services_lib 添加为模块。更重要的是,Intellij Idea 无法将其识别为模块,因为 src 文件夹是空的。您应该将带有任何代码的 java 文件添加到 src 文件夹中,然后从现有源创建模块并将其添加到项目结构中的项目中。然后清除java文件。【参考方案11】:这有点困难,因为它在以前的 API 中有所不同,但我找到了解决方案。谷歌说要做什么here;根据我们需要com.google.android.gms
类的问题,因此有必要设置google play services
,这只是一个库,我们必须像link 这样将其添加到我们的项目中。导入项目库google-play-services_lib
的副本而不是 sdk 文件夹中的副本非常重要。完成后,Google 的教程就完美了。
【讨论】:
您使用的 api 也很重要,api 10 或更少需要支持库developer.android.com/tools/extras/support-library.html 到底是你的错误?【参考方案12】:除了前面提到的许多事情之外,对我来说,在 Order 和 Export 中标记 .jar 也很重要。据我所知,它通常不被提及,但对我来说至关重要。
【讨论】:
【参考方案13】:与此建议有关:https://***.com/a/20215481/3080835
我还必须将此添加到清单中的Application
元素:
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
而且效果很好。
【讨论】:
【参考方案14】:在 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_
android:layout_
android:orientation="vertical">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_
android:layout_
android:layout_weight="0.40" />
</LinearLayout>
【讨论】:
【参考方案15】:要处理与 Drive 相关的导入,您需要来自 Google Drive SDK
的几个 jar。有一些较大的,因此您可能需要单独添加它们以适合您的应用。
如果这不能解决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
【讨论】:
【参考方案16】:我在装有 2.3.4 Android 的 LG-E730 上遇到了同样的问题。 在我在手机上更新 Google Play Service 之前出现错误。
【讨论】:
【参考方案17】:不要忘记实际构建 google-play-services_lib!这就是为什么它显示“找不到 google-play....apk”。对我来说,在 Eclipse 上,不需要其他技巧,而是从 Android 子菜单引用项目,而不是从 Java 构建路径或项目引用或其他任何东西。没有手动放置的罐子,我实际上不需要任何东西。
【讨论】:
【参考方案18】:在 Eclipse 中,需要为 google play 服务创建一个单独的项目,并将其作为一个 lib 从您的 Android 项目中引用,而不是简单地将 jar 添加到其中。在我的电脑中,我直接从 D:\adt-bundle-windows-x86-20130219\sdk\extras\google\google_play_services\libproject\google-play-services_lib 导入了 google play services Eclipse 项目并将其设置为 Lib 项目,所以我可以从我的 Android 项目中引用它。
【讨论】:
【参考方案19】:在同一个教程中说明
请注意,下面的代码仅用于测试您的 面向 Android API 12 或更高版本的应用程序中的设置
只需将您的最低 SDK 版本更改为 12 即可使用
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
尚未尝试 Aurel 针对旧版本 API 的解决方法。
【讨论】:
【参考方案20】:我认为值得一提的是(在我花了一个多小时拔掉头发之后),如果您使用 MapFragment,则不能使用 FragmentActivity(SupportMapFragment 在这种环境下可以正常工作)。我正准备放弃它。
【讨论】:
【参考方案21】:第一步 http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject 第二步 http://developer.android.com/google/play-services/setup.html 在那个页面上它有一个注释,但我们没有注意
注意:您应该引用已复制到源代码树的库的副本——您不应引用 Android SDK 目录中的库。
但我认为这不是一个好的记录方式:)
【讨论】:
【参考方案22】:这可能对某些人有所帮助。我有两个项目,一个是谷歌演示的副本,效果很好。另一个我复制到现有项目中,我根本无法运行它。在第二次失败中,我收到了上述错误消息。
我的问题是由于未启用库,即使我重新构建、导入多次等。右键单击项目 -> 属性 -> Java 构建路径 -> 订单和导出选项卡。在失败的项目中,未选中“Android Private Libraries”选项卡。
一旦我启用它,项目就可以正常工作了。
【讨论】:
【参考方案23】:我拥有上面每个人所说的一切,并通过简单地调用
super.onCreate(savedInstanceState);
作为 oncreate 方法中的第一条指令;在它是方法的最后一行之前。 :|
浪费了一整天。
【讨论】:
【参考方案24】:我遇到了这个问题,我只是更新了 Google Play 服务,并确保您将 google-play-service-lib 项目添加为依赖项,它现在可以在没有任何代码更改的情况下工作,但我仍然收到“Google Play 服务资源未找到。请检查您的项目配置以确保包含资源。”但这只发生在您设置了 setMyLocationEnabled(true) 时,有人知道为什么吗?
【讨论】:
【参考方案25】:我没有得到真正的解决方案,但我在做这些事情后解决了它: - 导入 google-play-services_lib 时勾选“将项目复制到工作区” - 不要将 minSdkVersion 设置为低于 13 - 如果主题出现错误,请尝试将布局主题更改为任何系统主题 - 从头开始重新创建您的项目,或者如果您从某个地方获得它,则恢复所有内容
【讨论】:
【参考方案26】:我遇到了同样的问题,只是从 SDK 安装了播放服务,所有问题都消失了。
【讨论】:
【参考方案27】:我在活动中写了import com.google.android.gms.maps.SupportMapFragment;
Eclipse 给了我红色图标 > 点击 > 修复项目设置.. > 添加存档 google-play-services.jar
终于成功了!!
【讨论】:
【参考方案28】:将 Google Play 服务添加到您的项目中
使 Google Play 服务 API 可用于您的应用:
按照此链接中的步骤操作:http://developer.android.com/google/play-services/setup.html#Setup
【讨论】:
【参考方案29】:我在 Windows 7 64 位机器上使用 Android SDK for x86 时遇到了这个问题。我下载了 Android SDK 64 位版本,让 Eclipse 在 Window > Preferences > Android > SDK location 中看到它,问题停止发生。
【讨论】:
【参考方案30】:请仔细阅读
如果一切都与谷歌代码一样,那么请检查清单文件,在我的情况下,我添加了地理键和地图键,这就是发生异常的原因,
注意 - 不要在清单文件中添加两个键删除映射键
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"/>
【讨论】:
以上是关于无法实例化 android.gms.maps.MapFragment的主要内容,如果未能解决你的问题,请参考以下文章
无法实例化页面(net.thucydides.core.webdriver.DriverConfigurationError:无法实例化类 io.appium.java_client.AppiumDr