Home » Android » java – Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller

java – Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller

Posted by: admin April 23, 2020 Leave a comment

Questions:

The problem is..

Error:Execution failed for task ':app:processDebugManifest'.

Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller than version L declared in library com.android.support:support-v4:21.0.0-rc1

The code in build.gradle

   apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.androidexample.gcm"
        minSdkVersion 8
        targetSdkVersion 16
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:+'
    compile 'com.google.android.gms:play-services:+'
    //compile 'com.android.support:support-v4:20.0.0'
    //compile 'com.google.android.gms:play-services:5.0.77'

}

Code in the AndroidManifest is ..

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidexample.gcm"
    android:versionCode="1"
    android:versionName="1.0" >

    <!-- GCM requires Android SDK version 2.2 (API level 8) or above. -->
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <!-- Main activity. -->
    <application
        android:name="com.androidexample.gcm.Controller"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <!-- Register Activity -->
        <activity
            android:name="com.androidexample.gcm.RegisterActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.DELETE" />
                <category android:name="android.intent.category.DEFAULT" />  
                <data android:scheme="com.idrivecare.familypro" />
            </intent-filter>
        </activity>


        <!-- Main Activity -->
        <activity
            android:name="com.androidexample.gcm.MainActivity"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/app_name" >
        </activity>

        <receiver
            android:name="com.google.android.gcm.GCMBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>

                <!-- Receives the actual messages. -->
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <!-- Receives the registration id. -->
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <category android:name="com.androidexample.gcm" />
            </intent-filter>
        </receiver>

        <service android:name="com.androidexample.gcm.GCMIntentService" />
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    </application>

    <!-- GCM connects to Internet Services. -->
    <uses-permission android:name="android.permission.INTERNET" />

    <!-- GCM requires a Google account. -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <!-- Keeps the processor from sleeping when a message is received. -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <!-- Creates a custom permission so only this app can receive its messages. -->
    <permission
        android:name="com.androidexample.gcm.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.androidexample.gcm.permission.C2D_MESSAGE" />

    <!-- This app has permission to register and receive data message. -->
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <!-- Network State Permissions to detect Internet status -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <!-- Permission to vibrate -->
    <uses-permission android:name="android.permission.VIBRATE" />

</manifest>

Thank you sir..

How to&Answers:

If you use

'com.android.support:support-v4:+'

It will suppose it can use 21.x since is the latest version (but not compatible with target less than L)

Change it to

'com.android.support:support-v4:20.+'

So it will download the latest 20.x version

Answer:

The problem is because your app min sdk is 8 and you selected to use the Google Plus services that requires min sdk 9.

Change the line “minSdkVersion 8” to “minSdkVersion 9“. So, save it.

After, Clean Project and Rebuild it.

Answer:

In my case I changed the code {minSdkVersion 8} inside build.gradle file to {minSdkVersion 9}


    defaultConfig {
            applicationId "com.example.npeducations.week1_lab"
            minSdkVersion 9
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
           }

Now it works fine

Answer:

<uses-sdk tools:overrideLibrary="your pkg name of libary with conflict" />

and add xmlns:tools=”http://schemas.android.com/tools” in AndroidManifest.xml

Answer:

I had to change the my libGDX Android Studio’s android/build.gradle file so it looked like this when I wanted to integrate Amazon Mobile Ads library.

android {
    buildToolsVersion "23.0.3"
    compileSdkVersion 23
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
        }

        instrumentTest.setRoot('tests')
    }
    defaultConfig {
        applicationId "com.foo.bar"
        // RBC minSdkVersion 8
        minSdkVersion 9
        targetSdkVersion 23
    }
}
...

Answer:

You can run the simply following command.

cordova build android -- --minSdkVersion=15

It will work for you.