在您的应用程序的AndroidManifest.xml中的元数据标签没有正确的价值 [英] The meta-data tag in your app's AndroidManifest.xml does not have the right value
问题描述
我遇到了在那里Robolectric正与我的AndroidManifest.xml麻烦的问题。我的应用程序运行正常,但Robolectric失败了所有的考试,甚至是 assertTrue(真)
。错误是:
android.view.InflateException:XML文件/[blah]/build/res/all/debug/layout/activity_main.xml行#-1(对不起,尚未实现):错误充气类片段
引起的:
java.lang.IllegalStateException:在您的应用程序的AndroidManifest.xml中的元数据标签没有正确的价值。预计4030500但发现0。你必须在&lt中的以下声明;用途>元:其中,元数据的android:NAME =com.google.android.gms.version机器人:值=@整数/ google_play_services_version/>
现在的问题是,我已经在我的清单中该行。下面是一些相关的文件:
AndroidManifest.xml中:
<舱单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=com.bryansills.studywithfriends
安卓版code =1
机器人:VERSIONNAME =1.0>
<用途-SDK
安卓的minSdkVersion =14
机器人:targetSdkVersion =18/>
<使用-权限的Android:名称=android.permission.INTERNET对/>
<使用-权限的Android:名称=android.permission.ACCESS_NETWORK_STATE/>
<使用-权限的Android:名称=android.permission.WRITE_EXTERNAL_STORAGE/>
<使用-权限的Android:名称=com.google.android.providers.gsf.permission.READ_GSERVICES/>
<使用-权限的Android:名称=android.permission.ACCESS_COARSE_LOCATION/>
<使用-权限的Android:名称=android.permission.ACCESS_FINE_LOCATION/>
<用途特征
机器人:glEsVersion =0x00020000
机器人:要求=真/>
<应用
机器人:allowBackup =真
机器人:图标=@可绘制/ ic_launcher
机器人:标志=@可绘制/ ic_action_icon
机器人:标签=@字符串/ APP_NAME
机器人:主题=@风格/学习与GT;
<活动
机器人:名称=com.bryansills.studywithfriends.MainActivity
机器人:标签=@字符串/ APP_NAME>
<意向滤光器>
<作用机器人:名称=android.intent.action.MAIN/>
<类机器人:名称=android.intent.category.LAUNCHER/>
&所述; /意图滤光器>
< /活性GT;
&所述;元数据
机器人:名称=com.google.android.maps.v2.API_KEY
机器人:值=@字符串/ google_maps_api_key_v2/>
&所述;元数据
机器人:名称=com.google.android.gms.version
机器人:值=@整数/ google_play_services_version/>
< /用途>
< /舱单>
build.gradle:
buildscript {
库{
mavenCentral()
行家{
URLhttps://oss.sonatype.org/content/repositories/snapshots/
}
}
依赖{
类路径com.android.tools.build:gradle:0.7.+
类路径com.squareup.gradle:摇篮,Android的测试插件:0.9.1-快照
}
}
应用插件:'机器人'
应用插件:Android的测试
库{
mavenCentral()
行家{
URLhttps://oss.sonatype.org/content/repositories/snapshots/
}
}
安卓{
compileSdkVersion 19
buildToolsVersion19.0.0
defaultConfig {
的minSdkVersion 14
targetSdkVersion 18
}
}
依赖{
编译com.android.support:support-v4:+
编译com.google.android.gms:播放服务:4.0 +。
testCompile'的JUnit:JUnit的:4.11
testCompileorg.robolectric:robolectric:2.3快照
testCompilecom.squareup:巨星 - 安卓1.0 +
}
MainActivityTest.java:
包com.bryansills.studywithfriends;
进口android.app.Activity;
进口android.content.Intent;
进口android.graphics.drawable.Drawable;
进口android.support.v4.app.ActionBarDrawerToggle;
进口android.support.v4.widget.DrawerLayout;
进口android.view.ActionProvider;
进口android.view.ContextMenu;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.view.SubMenu;
进口android.view.View;
进口com.bryansills.studywithfriends.MainActivity;
进口dalvik.annotation.TestTargetClass;
进口org.junit.Test;
进口org.junit.Before;
进口org.junit.runner.RunWith;
进口org.robolectric.Robolectric;
进口org.robolectric.shadows.ShadowToast;
进口org.robolectric.tester.android.view.TestMenuItem;
进口com.bryansills.studywithfriends.RobolectricGradleTestRunner;
进口的java.lang。*;
进口java.lang.CharSequence中;
进口java.lang.Exception的;
进口java.lang.Override;
进口java.lang.System中;
引入静态org.junit.Assert.assertTrue;
@RunWith(RobolectricGradleTestRunner.class)
公共类MainActivityTest {
私人MainActivity mainActivity;
私人DrawerLayout抽屉;
私人菜单项settingsMenuItem;
私人菜单项helpMenuItem;
@之前
公共无效设置()抛出异常{
mainActivity = Robolectric.buildActivity(MainActivity.class).create()可见()得到()。
抽屉=(DrawerLayout)mainActivity.findViewById(R.id.drawer);
settingsMenuItem =新TestMenuItem(R.id.settings);
helpMenuItem =新TestMenuItem(R.id.help);
}
@测试
公共无效testTrue()抛出异常{
assertTrue(真正的);
}
@测试
公共无效testActivity()抛出异常{
assertTrue(mainActivity!= NULL);
}
@测试
公共无效settingsMenuItemShouldStartSettingsActivity()抛出异常{
mainActivity.onOptionsItemSelected(settingsMenuItem);
assertTrue(ShadowToast.getTextOfLatestToast()等于(设置));
}
@测试
公共无效helpMenuItemShouldStartSettingsActivity()抛出异常{
mainActivity.onOptionsItemSelected(helpMenuItem);
assertTrue(ShadowToast.getTextOfLatestToast()等于(帮助));
}
}
注意:首先要安静一定要添加清单中的API密钥中的此处。
从清单中删除的旧款式许可
。删除获准是否存在。
<允许机器人:名称=com.example.locations.permission.MAPS_RECEIVE安卓的ProtectionLevel =签名>< /许可>
谷歌地图V2增加新的功能来体现。添加给出code到清单。
<元数据
机器人:名称=com.google.android.gms.version
机器人:值=@整数/ google_play_services_version/> //如果该整数没有显示添加最新的谷歌播放服务
除了
<元数据
机器人:名称=com.google.android.maps.v2.API_KEY
机器人:值=ENTER_YOUR_API_KEY_HERE/>
不要忘记输入 API密钥在清单
。
另外删除此..
<使用-权限的Android:名称=com.google.android.providers.gsf.permission.READ_GSERVICES/>
I am running into the issue where Robolectric is having trouble with my AndroidManifest.xml. My app runs fine, but Robolectric is failing all my tests, even assertTrue(true)
. The error is:
android.view.InflateException: XML file /[blah]/build/res/all/debug/layout/activity_main.xml line #-1 (sorry, not yet implemented): Error inflating class fragment
caused by:
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" />
The problem is that I already have that line in my manifest. Below are some of the relevant files:
AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bryansills.studywithfriends"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18"/>
<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:logo="@drawable/ic_action_icon"
android:label="@string/app_name"
android:theme="@style/study">
<activity
android:name="com.bryansills.studywithfriends.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="@string/google_maps_api_key_v2"/>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
</application>
</manifest>
build.gradle:
buildscript {
repositories {
mavenCentral()
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:0.7.+'
classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.1-SNAPSHOT'
}
}
apply plugin: 'android'
apply plugin: 'android-test'
repositories {
mavenCentral()
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 18
}
}
dependencies {
compile 'com.android.support:support-v4:+'
compile 'com.google.android.gms:play-services:4.0.+'
testCompile 'junit:junit:4.11'
testCompile 'org.robolectric:robolectric:2.3-SNAPSHOT'
testCompile 'com.squareup:fest-android:1.0.+'
}
MainActivityTest.java:
package com.bryansills.studywithfriends;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.ActionProvider;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import com.bryansills.studywithfriends.MainActivity;
import dalvik.annotation.TestTargetClass;
import org.junit.Test;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.shadows.ShadowToast;
import org.robolectric.tester.android.view.TestMenuItem;
import com.bryansills.studywithfriends.RobolectricGradleTestRunner;
import java.lang.*;
import java.lang.CharSequence;
import java.lang.Exception;
import java.lang.Override;
import java.lang.System;
import static org.junit.Assert.assertTrue;
@RunWith(RobolectricGradleTestRunner.class)
public class MainActivityTest {
private MainActivity mainActivity;
private DrawerLayout drawer;
private MenuItem settingsMenuItem;
private MenuItem helpMenuItem;
@Before
public void setUp() throws Exception {
mainActivity = Robolectric.buildActivity(MainActivity.class).create().visible().get();
drawer = (DrawerLayout) mainActivity.findViewById(R.id.drawer);
settingsMenuItem = new TestMenuItem(R.id.settings);
helpMenuItem = new TestMenuItem(R.id.help);
}
@Test
public void testTrue() throws Exception {
assertTrue(true);
}
@Test
public void testActivity() throws Exception {
assertTrue(mainActivity != null);
}
@Test
public void settingsMenuItemShouldStartSettingsActivity() throws Exception {
mainActivity.onOptionsItemSelected(settingsMenuItem);
assertTrue(ShadowToast.getTextOfLatestToast().equals("Settings"));
}
@Test
public void helpMenuItemShouldStartSettingsActivity() throws Exception {
mainActivity.onOptionsItemSelected(helpMenuItem);
assertTrue(ShadowToast.getTextOfLatestToast().equals("Help"));
}
}
Note : First be quiet sure to add the Api key in the manifest After creating it in here.
Remove the old style permission
from the Manifest. Remove given permission if exists.
<permission android:name ="com.example.locations.permission.MAPS_RECEIVE" android:protectionLevel="signature"></permission>
Google Map V2 add new feature to manifest. Add given code to the manifest..
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />// if this integer is not showing Add latest google play services
besides
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="ENTER_YOUR_API_KEY_HERE" />
Don't forget to enter API key in manifest
.
Also remove this..
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
这篇关于在您的应用程序的AndroidManifest.xml中的元数据标签没有正确的价值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!