2013-06-17 19 views
19

Buduję mały projekt biblioteczny razem z przykładowym projektem, który ilustruje użycie. Nie mogę uruchomić próbki w Androidzie Studio. Stworzyłem projekt od zera. Mam doświadczenie z Eclipse, ale to moja pierwsza próba na Android Studio & Gradle.Android Studio i Gradle - kompilacja się nie udaje

Błąd podane:

Gradle: Wykonanie nie powiodło się dla zadania ': Demo: dexDebug'.

Uruchamianie C: \ DevTools \ Android \ android-studio \ sdk \ build-tools \ android-4.2.2 \ dx.bat nie powiodło się. Zobacz wyjście

Mam następującą strukturę folderu:

- 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 u nasady projektu:

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

Settings.gradle u nasady projektu:

include ':library', ':demo' 

Klasa kompilacji modułu bibliotecznego:

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 modułu próby:

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

Odpowiedz

24

Określanie compile files('libs/android-support-v4.jar') oznacza, że ​​każda biblioteka zawiera wsparcie v4 Co chcesz zrobić, to określić, że każda biblioteka zależy od niego:..

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

pozwoli Gradle wykryć wszystkie zależności i informuje o tym tylko raz

Uwaga: Najpierw należy użyć Menedżera SDK i pobrać i zainstalować dwa repozytoria Maven: "Repozytorium pomocy technicznej Androida" i "Repozytorium Google".

+2

pracował dla mnie - trwało to dłużej niż to konieczne, ponieważ zignorowałem repozytorium Google! –

+0

Czy trzeba ponownie zaimportować projekt w Android Studio, aby mógł on wejść w życie? – dannyroa

+0

co jeśli użyjemy innej biblioteki? Na przykład, jeśli używamy myLibrary, co wpisać w zależności? – alicanbatur

1

, że okazało się, że problem:

I usunąć tę linię z pliku próbki Gradle.

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

Jednak nie mam pojęcia, dlaczego to nie działa (jeśli mam 2 lub 3 zewnętrznych bibliotek, że wszystko zależy od biblioteki wsparcia, jak mamy to zrobić, nie dotykając ich Gradle pliki?

+0

Ale to również zdarzyć, jeśli masz wsparcie biblioteki zawarte zarówno w lib iw głównej projektu Gradle Gradle lub nie trzeba mieć to tylko w 1 miejscu. –

+0

W Eclipse nigdy nie miałem żadnego problemu, o ile pliki jar były takie same dla każdego projektu (biblioteki). –

0

Powinieneś przejść do swojego folderu libs w IDE, kliknąć prawym przyciskiem myszy na jar i wybrać, aby dodać bibliotekę do projektu, ale musi jeszcze ustalić zależność, nawet jeśli wydaje się, że tam jest jar. Spójrz również na swój skrypt zbudowany w gradle, aby upewnić się, że pojawia się tam zależność. Jeśli to nadal nie działa, po prostu wyczyść projekt. Dokumentacja Intellijczyka da ci więcej szczegółów na temat tego, co robi czysty. patrz:

stackoverflow gradle build