无法设置 Google Play 服务

Unable to setup Google Play Services

我在使用 Google Play 服务时卡住了一天。这是 Google 创建的一个非常糟糕的过程。为什么这么难?? 我想使用 Google Play 服务来开发一些依赖地图的应用程序。我已经一步一步地尝试了一切,在许多网站上进行了讨论,但仍然无法得到它。我认为在这种情况下只有 Whosebug 可以提供帮助。我无法提供所有参考网站的 link,但我提供了其中一些 -
http://developer.android.com/google/play-services/setup.html#Setup
http://www.vogella.com/tutorials/AndroidGoogleMaps/article.html#installmaps
Setup Google Play Games Services
我正在使用 Eclipse ADT Bundle。 Google Play 服务在Android SDK 中有一个带勾的标记,表示已安装。它也位于正确的目录中。我正在提供我的项目的快照-


上面的快照显示了 activity_main.xml、启动应用程序和项目树结构时的错误。还显示已经导入了google_play_service_lib

public class MainActivity extends ActionBarActivity {

static final LatLng HAMBURG = new LatLng(53.558, 9.927);
  static final LatLng KIEL = new LatLng(53.551, 9.993);
  private GoogleMap map;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

     map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
            .getMap();
        Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG)
            .title("Hamburg"));
        Marker kiel = map.addMarker(new MarkerOptions()
            .position(KIEL)
            .title("Kiel")
            .snippet("Kiel is cool")
            .icon(BitmapDescriptorFactory
                .fromResource(R.drawable.ic_launcher)));

        // Move the camera instantly to hamburg with a zoom of 15.
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15));

        // Zoom in, animating the camera.
        map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
}

该项目不包含任何错误。我还将代码添加到 proguard-project.txt 和 android-manifest.xml 是

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.latlongfrommap"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
    android:minSdkVersion="17"
    android:targetSdkVersion="19" />

<uses-permission android:name="com.vogella.android.locationapi.maps.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" />

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

此外,我已经从 activity-main 的 console.Graphical 布局生成了 API 键也有一个警告。

请通过您的宝贵建议帮助我。谢谢。
编辑:
在官方设置指南中,他们没有提到应该将 jar 文件添加到库中。我这样做是因为我在许多网站上都找到了它。它是否正确??。片段标签未被检测到activity_main.xml..这有什么问题吗??
是的,关于 jar 文件我是对的。它不应该被添加。它正在制造某种冲突。但是我还是有错误

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.latlongfrommap/com.example.latlongfrommap.MainActivity}: android.view.InflateException: Binary XML file line #11: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
at android.app.ActivityThread.access0(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:377)
at android.app.Activity.setContentView(Activity.java:2154)
at android.support.v7.app.ActionBarActivity.superSetContentView(ActionBarActivity.java:217)
at android.support.v7.app.ActionBarActivityDelegateICS.setContentView(ActionBarActivityDelegateICS.java:110)
at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:77)
at com.example.latlongfrommap.MainActivity.onCreate(MainActivity.java:25)
at android.app.Activity.performCreate(Activity.java:5953)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
... 10 more
Caused by: java.lang.SecurityException: The Maps API requires the additional following permissions to be set in the AndroidManifest.xml to ensure a correct behavior:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
at com.google.maps.api.android.lib6.c.ck.a(Unknown Source)
at com.google.maps.api.android.lib6.c.i.a(Unknown Source)
at com.google.maps.api.android.lib6.c.el.a(Unknown Source)
at com.google.maps.api.android.lib6.c.ab.a(Unknown Source)
at com.google.maps.api.android.lib6.c.aa.a(Unknown Source)
at com.google.android.gms.maps.internal.x.onTransact(SourceFile:107)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onCreateView(Unknown Source)
at com.google.android.gms.maps.MapFragment$a.onCreateView(Unknown Source)
at com.google.android.gms.dynamic.a.b(Unknown Source)
at com.google.android.gms.dynamic.a.a(Unknown Source)
at com.google.android.gms.dynamic.a.onCreateView(Unknown Source)
at com.google.android.gms.maps.MapFragment.onCreateView(Unknown Source)
at android.app.Fragment.performCreateView(Fragment.java:2053)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:870)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1045)
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1147)
at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2118)
at android.app.Activity.onCreateView(Activity.java:5302)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
... 23 more

感谢上帝。终于完成了。许多网站表示,在完成 official tutorial 网站上描述的所有内容后,您需要做一些额外的事情。其中一些真的很有帮助,而另一些则没有。在你像我一样浪费你的一整天之前,请记住以下事情-

  1. "you have to add the google-play-services.jar externally to the library"。这完全是 不正确的。如果您已经导入了 google-play-services_lib 项目,这是 official guide 的第一步,然后再次添加 jar,则会对您的程序造成冲突。所以要么添加 jar 要么导入 google-play-services_lib 项目。
  2. 使用 Google Developers Console 生成 API Key。此步骤非常重要,并确保密钥已使用元标记附加到您的清单。

    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyAQ8XXXXXXXXXXXXXXXXXxxxxxxeEXdRE" />

要生成密钥,您需要知道项目的包名称和 SHA1 指纹,可以通过单击 window -> 首选项 -> Android -> 构建.
3.你必须添加一些权限

<uses-permission android:name="com.vogella.android.locationapi.maps.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="android.permission.ACCESS_NETWORK_STATE"/>
  1. 在执行官方指南的第 4 步之前,您需要将值添加到 string.xml 中,它位于项目树的 res/values 目录中。

    <integer name="google_play_services_version">5089000</integer>

    可以在sdk\extras\google\google_play_services\libproject\google-play-services_lib\res\values\version.xml

  2. 中找到版本号
  3. activity-main.xml<fragment> 标签可能会向您显示一些尴尬的警告。不用担心。

  4. 确保 Order & Export 中的 Android Private Libraries 选项 checked。它实际上 link 包含所有库的 google-play-services_lib 项目。为此:Properties -> Build Path -> Order and Export -> check Android Private Libraries

  5. 最后但同样重要的是,您必须在执行任何操作之前清理您的项目。为此,转到 project->clean 并确保选中 Build Automatically

您还需要从这些文件中导入您在 gradle 中需要的文件:

Google+ com.google.android.gms:play-services-plus:11.0.1
Google Account Login    com.google.android.gms:play-services-auth:11.0.1
Google Actions, Base Client Library com.google.android.gms:play-services-base:11.0.1
Google Address API  com.google.android.gms:play-services-identity:11.0.1
Google Analytics    com.google.android.gms:play-services-analytics:11.0.1
Google Awareness    com.google.android.gms:play-services-awareness:11.0.1
Google Cast com.google.android.gms:play-services-cast:11.0.1
Google Cloud Messaging  com.google.android.gms:play-services-gcm:11.0.1
Google Drive    com.google.android.gms:play-services-drive:11.0.1
Google Fit  com.google.android.gms:play-services-fitness:11.0.1
Google Location and Activity Recognition    com.google.android.gms:play-services-location:11.0.1
Google Maps com.google.android.gms:play-services-maps:11.0.1
Google Mobile Ads   com.google.android.gms:play-services-ads:11.0.1
Google Places   com.google.android.gms:play-services-places:11.0.1
Mobile Vision   com.google.android.gms:play-services-vision:11.0.1
Google Nearby   com.google.android.gms:play-services-nearby:11.0.1
Google Panorama Viewer  com.google.android.gms:play-services-panorama:11.0.1
Google Play Game services   com.google.android.gms:play-services-games:11.0.1
SafetyNet   com.google.android.gms:play-services-safetynet:11.0.1
Android Pay com.google.android.gms:play-services-wallet:11.0.1
Android Wear    com.google.android.gms:play-services-wearable:11.0.1