2013-06-17 1 views
19

Je construis un petit projet de bibliothèque avec un exemple de projet pour illustrer l'utilisation. Je n'arrive pas à exécuter l'exemple dans Android Studio. J'ai créé le projet à partir de zéro. Je suis expérimenté avec Eclipse mais c'est mon premier essai chez Android Studio & Gradle.Android Studio et Gradle - échec de la construction

L'erreur donnée:

Gradle: Échec de l'exécution de la tâche ': demo: dexDebug'.

Exécution C: \ DevTools \ Android \ Android studio \ sdk \ build-tools \ android-4.2.2 \ dx.bat a échoué. Voir sortie

je la structure du dossier suivant:

- demo 
    - build 
    - libs 
    - android-support-v4.jar 
    - src 
    - main 
     - java 
     - res 
    - build.gradle 
- library 
    - build 
    - libs 
    - android-support-v4.jar 
    - src 
    - main 
     - java 
     - res 
    - build.gradle 
- build.gradle 
- settings.gradle 

build.gradle à la racine du projet:

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

settings.gradle à la racine du projet:

include ':library', ':demo' 

Build.gradle pour le module de bibliothèque:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4' 
    } 
} 
apply plugin: 'android-library' 

dependencies { 
    compile files('libs/android-support-v4.jar') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 

build.gradle pour le module échantillon:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4' 
    } 
} 
apply plugin: 'android' 

dependencies { 
    compile project(':library') 
    compile files('libs/android-support-v4.jar') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 

Répondre

24

Spécification compile files('libs/android-support-v4.jar') signifie que chaque bibliothèque prend en charge v4 Qu'est-ce que vous voulez faire est de spécifier juste que chaque bibliothèque dépend:..

dependencies { 
    compile 'com.android.support:support-v4:13.0.0' 
} 

cela permettra gradle de détecter toutes les dépendances et inclure ce qu'une seule fois

Remarque: Vous devez d'abord utiliser le SDK Manager et télécharger et installer deux référentiels Maven: "Référentiel de support Android" et "Référentiel Google".

+2

a travaillé pour moi - a pris plus de temps que nécessaire parce que j'ai ignoré le Google Repository! –

+0

Avez-vous dû réimporter le projet dans Android Studio pour qu'il prenne effet? – dannyroa

+0

Et si nous utilisions une autre bibliothèque? Par exemple, si nous utilisons myLibrary, que faut-il taper dans les dépendances? – alicanbatur

1

Je trouve le problème:

J'ai retiré cette ligne à partir du fichier échantillon gradle.

compile files('libs/android-support-v4.jar') 

Cependant, je ne sais pas pourquoi ça ne fonctionne pas (si j'ai 2 ou 3 bibliothèques externes que tous dépendent de la bibliothèque de soutien, comment sommes-nous censés faire, sans toucher leurs fichiers Gradle?

+0

Mais cela aussi se produire si vous avez la bibliothèque de support inclus aussi bien dans votre lib et dans votre projet principal, gradle ou non gradle vous devez avoir dans 1 seul endroit. –

+0

Dans Eclipse, je n'ai jamais eu de problème dans la mesure où les fichiers jar étaient les mêmes pour chaque projet (bibliothèque). –

0

Vous devez naviguer vers votre dossier libs dans l'EDI, cliquez avec le bouton droit sur le fichier Jar et sélectionnez pour ajouter la bibliothèque au projet, il doit encore établir la dépendance même si le fichier Jar semble être présent. Regardez également votre script construit gradle pour vous assurer que la dépendance apparaît là. Si cela ne fonctionne toujours pas, lancez simplement un nettoyage sur le projet. La documentation d'Intellij vous donnera plus de détails sur ce que fait le nettoyage. voir:

stackoverflow gradle build

Questions connexes