35

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..

user1438799
  • 504
  • 2
  • 5
  • 7
  • Check this http://www.reddit.com/r/androiddev/comments/297xli/howto_use_the_v21_support_libs_on_older_versions/ – Deniz Aug 14 '14 at 09:25

6 Answers6

36

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.

AlamoPS
  • 561
  • 7
  • 16
19

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

Marco Acierno
  • 14,682
  • 8
  • 43
  • 53
12

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

Vini.g.fer
  • 11,639
  • 16
  • 61
  • 90
kiranvarma
  • 131
  • 1
  • 3
3
<uses-sdk tools:overrideLibrary="your pkg name of libary with conflict" />

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

Makvin
  • 3,475
  • 27
  • 26
0

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
    }
}
...
Red Cricket
  • 9,762
  • 21
  • 81
  • 166
-4

You can run the simply following command.

cordova build android -- --minSdkVersion=15

It will work for you.

Tabish
  • 1,592
  • 16
  • 13