【问题标题】:google map api v2, and older version of google play services libgoogle map api v2 和旧版本的 google play services lib
【发布时间】:2013-11-16 13:39:55
【问题描述】:

我将在我的 android 应用程序中使用地图,我应该使用 google play 服务。我在这里读了很多 q\a,比如this。在提到的问题中,接受的答案建议使用旧版本的 google play services lib,比如 Froyo 的那个。我下载了 google play services r10 并在我的应用程序中使用它,但出现错误。

如果我从清单中排除这行代码:

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

并在我的设备中运行该应用程序(我设备中的 google playe 服务的当前版本是 3.2.66 ),它会引发错误:

java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 4030500 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

如果我将它包含在 android:value=4030500 中,应用程序会运行但说我应该更新我的“google play services”。

那么我应该放什么 android:value 或者我的方式是否正确?

问候

【问题讨论】:

    标签: android google-maps google-play


    【解决方案1】:

    我下载了 google play services r10 并在我的应用中使用了它

    以上陈述是您问题的根本原因。如果你真的用过 r10(甚至是 r12),比去掉之后

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

    从您的 AndroidManifest 中,您不会收到此错误:

    java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 4030500 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    

    这个错误只是说,您链接到 4.0.30 版本的 Google Play 服务库。

    因此解决方案是删除上述meta-data 并确保您链接到以前的版本之一。

    如果使用 gradle 或 maven,只需将依赖版本设置为 3.2.65。如果使用旧方式开发,请在 Android SDK Manager 中下载 Froyo 的 Google Play 服务,将其从 sdk/extras/google/ 复制到您的工作目录,然后在您的项目首选项中选择此项目作为库依赖项目。

    【讨论】:

    • 我删除了元数据,但它没有用,我也尝试了“Froyo 的 Google Play 服务”,但没有用
    • 带有“Froyo 的 Google Play 服务”,它显示您应用的 AndroidManifest.xml 中的元数据标签没有正确的值。预期为 4030500,但发现为 0。您必须在...中具有以下声明
    • @persianDev 你似乎做错了什么。 Froyo 版本根本不需要元数据标签。从一个新项目开始。
    • 我会从一个新项目开始告诉你
    【解决方案2】:

    我也遇到了同样的问题。 在我的清单文件中添加这两行之后它工作了。

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

    【讨论】:

    • 不知道你要不要这样显示你的api密钥
    【解决方案3】:

    将您的 google play 服务从您的 sdk 管理器更新到最新版本,即 rev 13

    您需要将以下内容添加到清单文件中

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

    https://developers.google.com/maps/documentation/android/start#add_the_google_play_services_version_to_your_apps_manifest.

    这是从上次修订版 13 更新到 google-play-services 添加的新要求。

    【讨论】:

    • 我已将 rev 13 下载到我正在开发的电脑中
    • 我添加并得到了“应用程序无法运行...”,在 log cat 中我看到了这条消息:Google Play 服务已过期。需要 4030500 但找到 3266134
    • @persianDev 在设备或模拟器上进行测试。日志很清楚你有旧版本更新到新版本
    • @persianDev 检查这类似于您建议的问题解决方法@@code.google.com/p/android/issues/detail?id=61675
    • 我已将我的设备连接到我的电脑并使用它来调试应用程序,但我不使用模拟器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    相关资源
    最近更新 更多