2015-05-13 5 views
5

Sto studiando questo Building Simple Chat Client with Parse e sto usando il gradle 2.4 per creare il mio progetto. Il mio build.gradle e AndroidManifest.xml codici sono:Manifest merger failed: uses-sdk: minSdkVersion 1 non può essere più piccola della versione 7

build.gradle

buildscript { 
    repositories { 
     jcenter() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:1.1.3' 
    } 
} 

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 
} 


repositories { 
    jcenter() 
} 


dependencies { 
    compile fileTree(dir: 'libs', include: 'Parse-*.jar') 
    compile 'com.parse.bolts:bolts-android:1.+' 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar') 
    compile 'com.android.support:support-v4:21.0.0' 
    compile 'com.android.support:appcompat-v7:21.0.0+'  
    compile 'com.squareup.picasso:picasso:2.5.0' 
} 

AndroidManifest.xml

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

<application android:label="@string/app_name" 
android:name="main.java.org.hello.ChatApplication"> 
    <activity 
     android:name=".ChatActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

sto ottenendo l'errore successivo:

/home/grados-sanchez/workspace/simplechat/src/main/AndroidManifest.xml:0:0 Error: 
uses-sdk:minSdkVersion 1 cannot be smaller than version 7 declared in library /home/grados-sanchez/workspace/simplechat/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.0/AndroidManifest.xml 
Suggestion: use tools:overrideLibrary="android.support.v7.appcompat" to force usage 
:processDebugManifest FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':processDebugManifest'. 
> Manifest merger failed : uses-sdk:minSdkVersion 1 cannot be smaller than version 7 declared in library /home/grados-sanchez/workspace/simplechat/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.0/AndroidManifest.xml 
    Suggestion: use tools:overrideLibrary="android.support.v7.appcompat" to force usage 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or -- debug option to get more log output. 

BUILD FAILED 

Mi può aiutare per favore

risposta

16

È necessario aggiungere il minSdkVersion al vostro build.gradle.

In caso contrario, gradle usa il valore predefinito = 1.
Si sta utilizzando una libreria con minSdk=7, quindi non è possibile utilizzare minSdk = 1.

Inoltre, prestare attenzione al fatto che il gradino ha la priorità su i valori nel manifesto.

aggiungere qualcosa di simile:

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 22 
    } 
} 

Prestate attenzione alla vostra build.gradle. Hai due blocchi di dipendenze. Devi unire questi blocchi.

+0

grazie dalla tua risposta, ma quando ho aggiunto qualcosa come tuo codice. Ora ottengo ECCEZIONE ECCEZIONALE SUPERIORE: com.android.dex.DexException: più file dex definiscono Lcom/parse/FacebookAuthenticationProvider $ 1; \t a ... : dexDebug FAILED – Juan

+0

@Juan è un altro problema. La mia risposta dovrebbe risolvere la domanda che hai postato. L'ECCEZIONE ECCEZIONALE A LIVELLO SUPERIORE significa che stai utilizzando il doppio della stessa libreria. Controlla i tuoi file jar. –

+0

Wow, vero modo per risolvere questo. Grazie. :) Avevo due moduli. In pochi secondi i moduli build.gradle defaultConfig mancavano. –

4

Basta aggiungere

<uses-sdk tools:overrideLibrary="android.support.v7.appcompat"/> 

al AndroidManifest.xml e funzionerà. Ciò consentirà alla fusione Manifest di aggiungere questo anche quando la versione dell'API è precedente. Non dimenticare di aggiungere lo spazio dei nomi degli strumenti alla tua radice xml come mostrato di seguito.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.example.app" 
     xmlns:tools="http://schemas.android.com/tools"> 

si possono anche trovare ulteriori informazioni su questo qui: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-tools:overrideLibrary-marker

+0

quando aggiungo quella linea nel mio AndroidManifest.xml Ottengo: 21: 65: il prefisso "tools" dell'attributo "tools: overrideLibrary" asociated un tipo di elemento "uses-sdk" non è vincolato. – Juan

+0

Hai aggiunto 'xmlns: tools =" http://schemas.android.com/tools "' al tuo elemento radice manifest? –

0

sembra che hai dimenticare di aggiungere il seguente codice nel build.gradle. aggiungilo in build.gradle e prova a compilare

defaultConfig { 
    applicationId "com.XXX.XXXX" // your application package 
    multiDexEnabled true 
    minSdkVersion 14 
    targetSdkVersion 18 
    versionCode 99 
    versionName "11.1.5.5" 
} 
Problemi correlati