2015-05-13 2 views
5

Ich studiere diese Building Simple Chat Client with Parse und ich benutze Gradle 2.4, um mein Projekt zu bauen. Meine build.gradle und AndroidManifest.xml Codes sind:Manifest Fusion fehlgeschlagen: uses-sdk: minSdkVersion 1 kann nicht kleiner sein als Version 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> 

ich den nächsten Fehler bekommen:

/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 

Könnten Sie mir bitte helfen

Antwort

16

Sie haben die minSdkVersion zu Ihrem build.gradle hinzuzufügen.

Sonst verwendet gradle den Standardwert = 1.
Sie verwenden eine Bibliothek mit minSdk=7, dann können Sie nicht minSdk = 1 verwenden.

Achten Sie auch darauf, dass Gradle die Werte im Manifest überschreibt.

etwas wie folgt hinzufügen:

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 22 
    } 
} 

Achten Sie auf Ihre build.gradle. Sie haben zwei abhängige Blöcke. Sie müssen diese Blöcke zusammenführen.

+0

danke von deiner antwort, aber wenn ich etwas wie deinen code hinzufüge. Jetzt bekomme ich UNERWARTETE AUSNAHME: com.android.dex.DexException: Mehrere dex-Dateien definieren Lcom/parse/FacebookAuthenticationProvider $ 1; \t bei .... : dexDebug FAILED – Juan

+0

@Juan ist ein anderes Problem. Meine Antwort sollte die von Ihnen gepostete Frage lösen. Die UNERWARTETE AUSNAHME DER BESTEN EBENE bedeutet, dass Sie zweimal dieselbe Bibliothek verwenden. Überprüfen Sie Ihre JAR-Dateien. –

+0

Wow, True, um das zu lösen. Vielen Dank. :) Ich hatte zwei Module. Innerhalb von Sekunden fehlte build.gradle defaultConfig. –

4

Fügen Sie einfach

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

zu AndroidManifest.xml und es wird funktionieren. Dadurch wird die Manifest-Fusion auch dann hinzugefügt, wenn die API-Version älter ist. Vergessen Sie nicht, den Tools-Namespace in Ihrem xml-root hinzuzufügen, wie unten gezeigt.

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

Sie können auch weitere Informationen über diese finden Sie hier: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-tools:overrideLibrary-marker

+0

, wenn ich diese Zeile in meinem AndroidManifest hinzufüge.xml Ich bekomme: 21: 65: Das Präfix "tools" des Attributs "tools: overrideLibrary", das einer Art Element "uses-sdk" zugeordnet ist, wird nicht berechnet. – Juan

+0

Haben Sie 'xmlns: tools =" http://schemas.android.com/tools "' zu Ihrem Manifest-Root-Element hinzugefügt? –

0

Es scheint, dass Sie haben zu vergessen, den folgenden Code in build.gradle hinzuzufügen. füge es in build.gradle hinzu und versuche es zu kompilieren

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