【问题标题】:A required meta-data tag in your app's AndroidManifest.xml does not exist.您应用的 AndroidManifest.xml 中的必需元数据标记不存在。
【发布时间】:2014-01-27 15:35:40
【问题描述】:

我正在为安卓开发一个谷歌地图应用程序。

但是,不知何故,我的应用程序崩溃了,出现如下错误:

java.lang.IllegalStateException: A required meta-data tag in your app's AndroidManifest.xml does not exist.  

这就是我的 AndroidManifest.xml 的样子:-

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <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"/>
  <permission android:name ="com.example.locations.permission.MAPS_RECEIVE" android:protectionLevel="signature"></permission>

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

    </application>

</manifest>

日志:-

01-09 12:29:35.249: E/AndroidRuntime(7448): Caused by: java.lang.IllegalStateException: A required meta-data tag in your app's AndroidManifest.xml does not exist.  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 xml


【解决方案1】:

清单的应用程序标记中缺少以下内容。这是更新后的 google play 服务的新要求。

查看主题将 Google Play 服务版本添加到您的应用清单@

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

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

删除这个

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

不需要

【讨论】:

  • 我删除了权限标签。那确实解决了错误。我是否需要按原样放置 或将 google_play_services_version 替换为其他内容
  • @user3146095 没有。 &lt;permission map api v2 不需要。建议的内容是正确的。确保您拥有更新的 google play 服务。您可以自己阅读文档。链接也发布了
【解决方案2】:

Google Map V2 在 AndroidManifest.xml 中添加新功能。您需要在application 标记中添加此元标记

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

【讨论】:

  • 感谢您实际提及它需要进入的部分
【解决方案3】:

谷歌地图入门https://developers.google.com/maps/documentation/android/start

指南说:

将 Google Play 服务版本添加到您应用的清单中

编辑应用程序的 AndroidManifest.xml 文件,并在元素中添加以下声明。这嵌入了用于编译应用的 Google Play 服务版本。

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

【讨论】:

    【解决方案4】:

    尝试在 Manifest 文件上添加以下元数据标签,它工作正常。

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

    【讨论】:

    • 我需要在 google_play_services_version 中提及什么??
    • 这一行只用于Android Studio 你可以用Eclipse 那个时候用于google play service lib文件
    【解决方案5】:

    作为Google Map V2 使用使用Google Play services,您需要保持更新。 最新的 google play 服务需要 version 名称,在 AndroidManifest.xml 中使用 &lt;meta-data .. /&gt; 来提及。这可以通过以下两种方式解决_

    1.AndroidManifest.xml的应用标签内添加以下meta-data

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

    这个值在你的Google Play services 库中(res -> values -> version.xml

    2.

    这样直接添加版本号
    <meta-data android:name="com.google.android.gms.version" android:value="4030500" />
    

    4030500 是存储在里面的版本代码

    google-play-services_lib>res>values>version.xml

    喜欢

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

    【讨论】:

    • 我使用第一种方法,它工作正常。我还从@integer/google_play_services_version 交叉检查了我的版本并获得了所需的结果。但是对于一些生产用户来说,它仍然崩溃。对此有何意见?
    【解决方案6】:

    尝试清理您的项目(选择项目>项目选项卡>清理)

    我用这个解决了我的问题。清洁是大多数问题的解决方案。

    【讨论】:

      【解决方案7】:

      无需许可:

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

      包含 google 服务的标签可能会解决问题。

      【讨论】:

        【解决方案8】:

        如果您更新您的 google play services,您也需要更新您的 res/values 标签

        【讨论】:

          【解决方案9】:

          你必须添加这一行

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

          【讨论】:

            猜你喜欢
            • 2021-08-30
            • 2020-03-26
            • 2021-12-05
            • 2016-10-15
            • 1970-01-01
            • 2012-09-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多