Android Studio и Gradle - сбой сборки

Я создаю небольшой проект библиотеки вместе с примером проекта, чтобы проиллюстрировать использование. Мне не удается запустить образец в Android Studio. Я создал проект с нуля. У меня есть опыт работы с Eclipse, но это моя первая попытка в Android Studio и Gradle.

Выдана ошибка:

Gradle: не удалось выполнить задачу «: demo: dexDebug».

Ошибка запуска C:\DevTools\Android\android-studio\sdk\build-tools\android-4.2.2\dx.bat. См. вывод

У меня есть следующая структура папок:

- 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 в корне проекта:

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

Settings.gradle в корне проекта:

include ':library', ':demo'

Build.gradle для библиотечного модуля:

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 для примера модуля:

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

person Vincent Mimoun-Prat    schedule 17.06.2013    source источник


Ответы (3)


Указание compile files('libs/android-support-v4.jar') означает, что каждая библиотека включает поддержку v4. Что вы хотите сделать, так это просто указать, что каждая библиотека зависит от него:

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

Это позволит Gradle обнаружить все зависимости и включить их только один раз.

Примечание. Сначала необходимо использовать диспетчер SDK, а также загрузить и установить два репозитория Maven: «Репозиторий поддержки Android» и «Репозиторий Google».

person Siva Velusamy    schedule 18.06.2013
comment
сработало для меня - хотя это заняло больше времени, чем необходимо, потому что я проигнорировал репозиторий Google! - person James Gupta; 18.07.2013
comment
Вам пришлось повторно импортировать проект в Android Studio, чтобы он вступил в силу? - person dannyroa; 29.07.2013
comment
что, если мы будем использовать другую библиотеку? Например, если мы используем myLibrary, что вводить в зависимости? - person alicanbatur; 13.11.2013

Я нашел проблему:

Я удалил эту строку из примера файла gradle.

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

Однако я понятия не имею, почему это не работает (если у меня есть 2 или 3 внешние библиотеки, которые все зависят от библиотеки поддержки, как мы должны это делать, не касаясь их файлов gradle?

person Vincent Mimoun-Prat    schedule 17.06.2013
comment
Но это также произойдет, если у вас есть библиотека поддержки, включенная как в вашу библиотеку, так и в ваш основной проект, gradle или нет, вы должны иметь ее только в 1 месте. - person Alexander Kulyakhtin; 17.06.2013
comment
В Eclipse у меня никогда не было проблем, поскольку файлы jar были одинаковыми для каждого (библиотека) проекта. - person Vincent Mimoun-Prat; 17.06.2013

Вы должны перейти в папку libs в IDE, щелкнуть правой кнопкой мыши на банке и выбрать, чтобы добавить библиотеку в проект, все равно необходимо установить зависимость, даже если банка есть. Также посмотрите на созданный вами скрипт Gradle, чтобы убедиться, что там есть зависимость. Если это все еще не работает, просто запустите Gradle Clean в проекте. Документация Intellij даст вам более подробную информацию о том, что делает clean. видеть:

сборка градиента stackoverflow

person Chris    schedule 16.07.2013