问题
I'm following a tutorial in HeadFirst Android development and encountered issues after adding: private ActionBarDrawerToggle drawerToggle;
The control was deprecated so I followed instructions on Stack to resolve that issue by adding com.android.support:appcompat-v7:26.0.0-alpha1 to the app modules Dependencies
But now I'm getting the following build errors:
Error:Execution failed for task ':app:processDebugManifest'.
Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(25.3.1) from [com.android.support:recyclerview-v7:25.3.1] AndroidManifest.xml:24:9-31 is also present at [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml:27:9-38 value=(26.0.0-alpha1). Suggestion: add 'tools:replace="android:value"' to element at AndroidManifest.xml:22:5-24:34 to override.
Here is the code:
回答1:
Problem is that all support libraries with same version and major version has to match compile SDK version.
So try to force a specific support library version.
Put this at the end of your app module in 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'
}
}
}
}
回答2:
First add this line to your manifest tag if you do not have yet:
xmlns:tools="http://schemas.android.com/tools"
Example:
<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">
Then Add this meta tag inside your application to overwrite you build tools version, in this case for example I choosed the version 25.3.1
<application>
...
..
<meta-data
tools:replace="android:value"
android:name="android.support.VERSION"
android:value="25.3.1" />
</application>
回答3:
Changed all support library versions to 25.3.1 and worked like a charm:
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
You also need to change the following parameters to 25:
compileSdkVersion 25
targetSdkVersion 25
回答4:
<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>
回答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>
it will work @Ambilpura....
回答6:
Open Android Studio -> Open Manifest File
Add <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>
. Don't forget to include xmlns:tools="http://schemas.android.com/tools"
too, before the <application>
tag
replace
compile 'com.android.support:recyclerview-v7:+'
by
compile 'com.android.support:recyclerview-v7:25.3.1'
and add
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
回答7:
- At Android Studio -> Open Manifest File
- Switch to Merged Manifest and check Other Manifest file.
In my case I am using 26.1.0 support files but found support-v13 is 26.0.1
So I added implementation 'com.android.support:support-v13:26.1.0'
to Gradle file and problem solved
回答8:
the answer by @sagar giri is a temporary work around. what i did to solve this is explained at the end.
If you have latest support library installed in latest android studio and if you have a old support library version in build gradle's app module, then android studio fails due to the version mismatch.
So update your support library version to latest one and fix latest support library changes like icon renaming etc and rebuild it.
hope it helps...
回答9:
This code resolved my problem
"Problem is that all support libraries with same version and major version has to match compile SDK version.
So try to force a specific support library version. Put this at the end of your app module in build.gradle."
thanks
回答10:
add 'tools:replace="android:value"' to element at AndroidManifest.xml:22:5-24:34 to override. add to Line AndroidManifest.xml:22
来源:https://stackoverflow.com/questions/43140059/add-toolsreplace-androidvalue-to-meta-data-element-at-androidmanifest