您应用的 AndroidManifest.xml 中的必需元数据标记不存在。
Posted
技术标签:
【中文标题】您应用的 AndroidManifest.xml 中的必需元数据标记不存在。【英文标题】:A required meta-data tag in your app's AndroidManifest.xml does not exist. 【发布时间】: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" />
我正在为这个应用程序使用谷歌地图 我该如何解决这个问题?
【问题讨论】:
按照以下说明操作:developer.android.com/google/play-services/setup.html。您需要添加:清单的应用程序标记中缺少以下内容。这是更新后的 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>
不需要
【讨论】:
我删除了权限标签。那确实解决了错误。我是否需要按原样放置<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
中使用 <meta-data .. />
来提及。这可以通过以下两种方式解决_
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>
【讨论】:
以上是关于您应用的 AndroidManifest.xml 中的必需元数据标记不存在。的主要内容,如果未能解决你的问题,请参考以下文章
找不到明确的活动类。您是不是在 AndroidManifest.xml 中声明了此活动
AdMob 错误“您必须在 androidmanifest.xml 中使用 configchanges 声明 adactivity”
错误:您是不是在 AndroidManifest.xml 中声明了此活动?尝试上课时
无法找到明确的活动类您是不是在 AndroidManifest.xml 中声明了此活动?