在AndroidManifest中添加'tools:replace =“Android:value”'到<meta-data>元素

时间:2017-03-31 11:54:45

标签: android android-studio gradle android-manifest android-support-library

我正在关注HeadFirst Android开发中的教程,并在添加后遇到问题:     私人ActionBarDrawerToggle drawerToggle;

该控件已被弃用,因此我按照Stack上的说明通过将com.android.support:appcompat-v7:26.0.0-alpha1添加到应用程序模块依赖项来解决该问题

但是现在我遇到了以下构建错误:

错误:任务':app:processDebugManifest'执行失败。

  

清单合并失败:来自[com.android.support:recyclerview-v7:25.3.1] AndroidManifest.xml:24:9-的属性meta-data#android.support.VERSION@value value =(25.3.1) 31       也出现在[com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml:27:9-38 value =(26.0.0-alpha1)。       建议:在AndroidManifest.xml:22:5-24:34中添加'tools:replace =“android:value”'以覆盖。

以下是代码:

11 个答案:

答案 0 :(得分:179)

问题是所有具有相同版本和主要版本的支持库必须匹配编译SDK版本。

因此,请尝试强制使用特定的支持库版本。 将其放在build.gradle中的应用模块的末尾。

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.0'
            }
        }
    }
}

答案 1 :(得分:17)

如果您还没有,请先将此行添加到您的清单标记中:

xmlns:tools="http://schemas.android.com/tools"

示例:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.winanainc"
    android:versionCode="3"
    android:versionName="1.2"
    xmlns:tools="http://schemas.android.com/tools">

然后在您的应用程序中添加此元标记以覆盖您的构建工具版本,在本例中我选择了版本25.3.1

<application>
   ...
   ..
    <meta-data
        tools:replace="android:value"
        android:name="android.support.VERSION"
        android:value="25.3.1" />
</application>

答案 2 :(得分:5)

将所有支持库版本更改为25.3.1并像魅力一样工作:

ClassC.py

您还需要将以下参数更改为25:

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'

答案 3 :(得分:5)

 <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:largeHeap="true"
            android:supportsRtl="true"
            android:theme="@style/AppTheme"

            >
            <meta-data
                tools:replace="android:value"
                android:name="android.support.VERSION"
                android:value="26.0.0" />
        </application>

答案 4 :(得分:2)

打开 Android Studio - &gt;打开清单文件

添加<uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>。不要忘记在xmlns:tools="http://schemas.android.com/tools"代码

之前添加<application>

替换

compile 'com.android.support:recyclerview-v7:+' 

通过

compile 'com.android.support:recyclerview-v7:25.3.1'

并添加

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'

答案 5 :(得分:1)

  1. 在Android Studio中->打开清单文件
  2. 切换到合并清单并检查其他清单文件。

就我而言,我使用的是26.1.0支持文件,但发现support-v13为26.0.1 enter image description here

因此我将implementation 'com.android.support:support-v13:26.1.0'添加到了Gradle文件中并解决了问题

答案 6 :(得分:1)

        Add <meta-data> tag in manifest.xml file as below...


    <?xml version="1.0" encoding="utf-8"?>
    <manifest package="com.demo"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">

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

        <application
            android:name=".MyApplication"
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity
                android:name=".MainActivity"
                android:theme="@style/AppTheme">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>

                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>

            **<meta-data
                tools:replace="android:value"
                android:name="android.support.VERSION"
                android:value="25.3.1" />//this 25.3.1 version should be same which we defined in the build.gradle file. i am using compileSdkVersion 25**

        </application>
 </manifest>

确定使用@ASK。...

答案 7 :(得分:0)

@sagar giri的答案是一个临时工作。最后解释了我要解决的问题。

如果您在最新的android studio中安装了最新的支持库,并且如果您在build gradle的应用程序模块中有一个旧的支持库版本,则android studio会因版本不匹配而失败。

因此,请将您的支持库版本更新为最新版本,并修复最新的支持库更改,如图标重命名等,然后重建它。

希望它有所帮助...

答案 8 :(得分:0)

此代码解决了我的问题

“问题是所有具有相同版本和主要版本的支持库都必须与编译SDK版本匹配。

因此,请尝试强制使用特定的支持库版本。将其放在build.gradle中的应用程序模块的末尾。”

谢谢

答案 9 :(得分:0)

无论何时遇到此问题,最好的方法都是运行Rebuild Project-这将告诉您确切的原因。

在我的情况下,meta-datamodule中都存在app

答案 10 :(得分:-2)

在AndroidManifest.xml:22:5-24:34的元素上添加'tools:replace =“ android:value”'以覆盖。 添加到Line AndroidManifest.xml:22