web-dev-qa-db-fra.com

Android Studio et Gradle - échec de la construction

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 à Android = Studio et Gradle.

L'erreur donnée:

Gradle: l'exécution a échoué pour la tâche ': demo: dexDebug'.

Échec de l'exécution de C:\DevTools\Android\android-studio\sdk\build-tools\Android-4.2.2\dx.bat. Voir la sortie

J'ai la structure de dossiers suivante:

- 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 l'exemple de module:

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
    }
}
21

La spécification de compile files('libs/Android-support-v4.jar') signifie que chaque bibliothèque inclut le support v4. Ce que vous voulez faire, c'est simplement spécifier que chaque bibliothèque en dépend:

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

Cela permettra à gradle de détecter toutes les dépendances et de ne l'inclure qu'une seule fois.

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

25
Siva Velusamy

J'ai trouvé le problème:

J'ai supprimé cette ligne de l'exemple de fichier Gradle.

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

Cependant, je n'ai aucune idée pourquoi cela ne fonctionne pas (si j'ai 2 ou 3 bibliothèques externes qui dépendent toutes de la bibliothèque de support, comment sommes-nous censés faire, sans toucher à leurs fichiers gradle?

1

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

build gradle stackoverflow

0
Chris