【问题标题】:Unable to setup Google Play Services无法设置 Google Play 服务
【发布时间】:2015-02-21 14:30:10
【问题描述】:

我在使用 Google Play 服务时被困了一天。这是谷歌创建的一个非常糟糕的程序。为什么这么难?? 我想使用 Google Play 服务来开发一些依赖于地图的应用程序。我已经一步一步地尝试了一切,在许多网站上讨论过,但仍然无法得到它。我认为只有 StackOverflow 可以在这种情况下提供帮助。我不能提供所有参考网站的链接,但我提供了其中一些-
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 捆绑包。 Google Play Service 在 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>

另外我已经从控制台生成了 API 密钥。activity-main 的图形布局也有一个警告。

请根据您的宝贵建议帮助我。谢谢。
编辑:
在官方设置指南中,他们没有提到应该将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.access$800(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$4.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

【问题讨论】:

  • “我也尝试过使用 Android Studio,但相信我,这是计算机编程世界中最糟糕的事情。” - 是这样吗?我猜他们当时制造了Android Studio the official Android IDE 显然是出乎意料的。
  • 是的,他们做到了..您也可以通过在 google 中输入“为什么 Android Studio 太慢??”来了解它。
  • 你是这个的用户吗.. 我也不能在这个上运行它.. 有什么想法吗..??
  • 对我来说工作正常。就在昨天,我在the official guide 之后使用 Google Play Services 建立了一个新项目(在 Android Studio 中),没有任何问题。
  • 我也关注了它..但没有为我工作..

标签: android eclipse google-play-services android-mapview android-maps-v2


【解决方案1】:

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

  1. “您必须将 google-play-services.jar 从外部添加到库中”。这完全是不正确。如果你已经导入了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 指纹,可通过单击窗口 -> 首选项 -> 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 步之前,您需要将值添加到项目树的 res/values 目录中的 string.xml 中。

    &lt;integer name="google_play_services_version"&gt;5089000&lt;/integer&gt;

    可以在sdk\extras\google\google_play_services\libproject\google-play-services_lib\res\values\version.xml中找到版本号

  2. activity-main.xml&lt;fragment&gt; 标签可能会显示一些尴尬的警告。不用担心。

  3. 确保 Order & Export 中的 Android Private Libraries 选项已选中。它实际上链接了包含所有库的google-play-services_lib 项目。为此:Properties -&gt; Build Path -&gt; Order and Export -&gt; check Android Private Libraries

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

【讨论】:

  • Properties -> Build Path -> Order and Export -> 检查 Android Private Libraries 位于何处?
【解决方案2】:

您还需要从这些中导入您需要的 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

【讨论】:

    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    相关资源
    最近更新 更多