将 'tools:replace="Android:value"' 添加到 AndroidManifest 中的 <meta-data> 元素

Posted

技术标签:

【中文标题】将 \'tools:replace="Android:value"\' 添加到 AndroidManifest 中的 <meta-data> 元素【英文标题】:add 'tools:replace="Android:value"' to <meta-data> element at AndroidManifest将 'tools:replace="Android:value"' 添加到 AndroidManifest 中的 <meta-data> 元素 【发布时间】:2017-08-25 16:31:49 【问题描述】:

我正在关注 HeadFirst android 开发中的教程,添加后遇到问题: 私人 ActionBarDrawerToggle 抽屉切换;

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

但现在我收到以下构建错误:

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

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

代码如下:

【问题讨论】:

我在我的清单中添加了以下内容:xmlns:tools="schemas.android.com/tools"> tools:replace="android:value" 然后得到以下错误:错误:任务':app:processDebugManifest'的执行失败。 > 清单合并失败并出现多个错误,请参阅日志 为每个支持库添加 25.3.1 版本,例如:recyclerview-v7,support-v4,设计:在 build.gradle 中:- compile 'com.android.support:appcompat-v7:25.3.1 ' 编译 'com.android.support:recyclerview-v7:25.3.1' 编译 'com.android.support:design:25.3.1' 【参考方案1】:

问题是所有具有相同版本和主版本的支持库必须匹配编译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 工作解决方案。 @sagar giri 我得到 can't resolve symbol 'DependencyResolveDetails' 错误。你能告诉我解决办法吗 @D.hodges 这是可行的解决方案。请接受它作为答案。 谢谢,这行得通。应该被接受为有效答案【参考方案2】:

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

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>

【讨论】:

正是需要的【参考方案3】:
 <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】:

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

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

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

compileSdkVersion 25
targetSdkVersion 25

【讨论】:

【参考方案5】:
        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>

它会工作@Ambilpura....

【讨论】:

【参考方案6】:

打开Android Studio -> 打开清单文件

添加&lt;uses-sdk tools:overrideLibrary="android.support.v17.leanback"/&gt;。不要忘记在&lt;application&gt; 标签之前也包含xmlns:tools="http://schemas.android.com/tools"

替换

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'

【讨论】:

【参考方案7】:

我已经尝试了所有解决方案,但没有任何效果。阅读谷歌文档后,我找到了解决清单合并问题的解决方案。

只需在清单文件中添加这个简单的行:

<application
      ...
      tools:node="replace"
      ...
</application>

这解决了我的问题。

如果这不起作用,请尝试这些,

tools:node="merge-only-attributes"
tools:node="removeAll"
tools:node="replace"

您可以从此链接找到谷歌文档。 Merge multiple manifest files

【讨论】:

【参考方案8】:
    在 Android Studio -> 打开清单文件 切换到合并清单并检查其他清单文件。

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

所以我在 Gradle 文件中添加了 implementation 'com.android.support:support-v13:26.1.0' 并解决了问题

【讨论】:

【参考方案9】:

@sagar giri 的回答是临时解决办法。最后解释了我为解决这个问题所做的工作。

如果您在最新的 android studio 中安装了最新的支持库,并且如果您在 build gradle 的 app 模块中有旧的支持库版本,那么 android studio 由于版本不匹配而失败。

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

希望对你有帮助……

【讨论】:

【参考方案10】:

这段代码解决了我的问题

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

所以尝试强制一个特定的支持库版本。将它放在 build.gradle 中应用模块的末尾。”

谢谢

【讨论】:

【参考方案11】:

当您遇到此问题时,最好的方法是运行 Rebuild Project - 这会告诉您发生这种情况的确切原因。

在我的情况下,meta-data 出现在 moduleapp

【讨论】:

【参考方案12】:

将 'tools:replace="android:value"' 添加到 AndroidManifest.xml:22:5-24:34 的元素以覆盖。 添加到行 AndroidManifest.xml:22

【讨论】:

以上是关于将 'tools:replace="Android:value"' 添加到 AndroidManifest 中的 <meta-data> 元素的主要内容,如果未能解决你的问题,请参考以下文章

Android AAR的tools:replace冲突解决方案(转载)

Android X:tools:replace 在 line: for 属性中指定,但没有指定新值

错误记录Android Studio 集成 ARoute 编译报错 ( 兼容 support 库和 androidx 库 | add ‘tools:replace=“android:appCo )

Rails 文章助手 - “a” 或 “an”

appComponentFactory重复

试用顺序表作为存储结构,实现将线性表(a0,a1,...an-1)就地逆置的操作,所谓"就地"指辅助空间应为O(1)。