Google服务添加了强制关闭应用程序并显示日志cat错误

时间:2013-11-01 10:04:04

标签: android

我一直在开发一个用于加载地图视图的简单应用。我遵循了API。 https://developers.google.com/maps/documentation/android/start#add_a_map

但是

执行应用程序强制关闭后和LOGCAT ERROR 应用的AndroidManifest.xml中的元数据标记没有正确的值。预计4030500但发现0。  这是我的清单

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

<uses-sdk
    android:minSdkVersion="12"
    android:targetSdkVersion="13" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission       android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

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

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

<application
    android:allowBackup="true"
    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="AIzaSyA5QozHkGwJP_9iJi7jtBV938T1wws02gA" />

    <activity
        android:name="com.example.newgmaps.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.gms.version" android:value="@integer/google_play_services_version" />
</application>

这是我的主要xml

<?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"
      android:name="com.google.android.gms.maps.MapFragment"/>

这是主要活动

package com.example.newgmaps;

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

public class MainActivity extends Activity {

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

7 个答案:

答案 0 :(得分:3)

请执行以下两个步骤并告诉我

首先更新您的Google Play服务,如此处所示 enter image description here

第二次试用我为你创建的这个新的清单文件

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

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

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

    <uses-permission android:name="icom.example.newgmaps.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <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-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

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

        <activity
            android:name="com.example.newgmaps.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>
    </application>

</manifest>

如果您也解决了这个问题,请告诉我 谢谢

答案 1 :(得分:2)

立即使用以前版本的Google Play服务libproject。可以从这里下载:https://dl-ssl.google.com/android/repository/google_play_services_3225130_r10.zip

为我工作。

然后,当Google向所有人提供最新版本时,您可以稍后对此进行更新,但有些事情告诉我,在此更改传播到所有设备之前会有一段时间。

答案 2 :(得分:1)

我在运行4.3的2012 N7上运行应用程序时遇到同样的问题。

我不认为Play服务的实际发布版本与version.xml中的SDK版本匹配:

google_play_services_version 4030500

所以这是在Play商店中等待Play服务更新的情况,或者可能尝试更改version.xml中的google-play-services_lib.

答案 3 :(得分:1)

如果您启动Android SDK管理器,您应该会看到“用于Froyo的Google Play服务”模块。安装并使用它而不是“新”版本。这对我有用。

答案 4 :(得分:1)

Google必须将Google Play服务更新为4.xxx版 enter image description here

答案 5 :(得分:1)

我在“AndroidManifest.xml”

中添加了以下xml代码
<Application 
...
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
...
</Application>

崩溃错误消失了。 但是当我打电话时......

int iErrorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);

“iErrorCode”是2. 2意味着像这样

  

public static final int SERVICE_VERSION_UPDATE_REQUIRED   已安装的Google Play服务版本已过期。调用活动应该将此错误代码传递给getErrorDialog(int,Activity,int)以获取本地化的错误对话框,该对话框将在显示时解决错误。   常数值:2(0x00000002)   Details...

LogCat也说......

  

W / GooglePlayServicesUtil(4728):Google Play服务已过期。 需要4030500但找到3266136

版本代码“4030500”在哪里?

  

[SDK] \额外\谷歌\ google_play_services \ libproject \ Google处理播放services_lib \ RES \值

您可以看到“version.xml”。打开它!

<?xml version="1.0" encoding="utf-8"?> <resources>
    <integer name="google_play_services_version">4030500</integer>
</resources>

捉迷藏~~! :) 这就是为什么我们在更新新SDK并使用新的“google-play-services-lib”时得到了这个errorCode(2)。

好!得到它了!我们在设备上查看我的Google Play版本。

enter image description here

手机上的版本是“4.4.21”我觉得没问题。 这是什么“3266136”?这是从哪里来的?我无法理解这一点。

如果我弄明白这一点,我会更新这个很长的答案。

祝你好运!大家好! :)

更新1: 我下载了apk 4.4.22并安装在我的手机上。但是,LogCat仍然显示“3266136”。 这真是太奇怪了。我认为Google-Team必须尽快解决它!

4.4.22 Download here...

更新2: 毕竟,我决定将“google-play-services_lib”和“android-support-v4.jar”降级到以前的版本。我会等他们的。 :)

答案 6 :(得分:0)

尝试在Manifest中的应用程序标记中添加此元数据标记:

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