Jaki jest właściwy sposób określenia projektu biblioteki systemu Android, aby uwzględnić jego zależności
W Android Studio próbuję skompilować moduł aplikacji na Androida, który korzysta z biblioteki Android.
Biblioteka zawiera plik jar dla Bugsense (dołączany automatycznie przez gradle).
Chociaż moduł biblioteki poprawnie się kompiluje, moduł aplikacji zawodzi, ponieważ szuka pliku jar Bugsense, który jest używany w module biblioteki.
Mam obejście, które pozwala na kompilację projektu. Włączając również zależność Bugsense do projektu, wszystko działa.
Moje pytanie brzmi: jak sprawić, by projekt był kompilowany bez duplikowania zależności Bugsense?
Oto mój plik build.gradle dla projektu biblioteki.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android-library'
repositories {
mavenCentral()
maven { url 'http://www.bugsense.com/gradle/' }
}
android {
compileSdkVersion 15
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 15
targetSdkVersion 15
}
}
dependencies {
compile 'com.bugsense.trace:bugsense:3.6'
}
Projekt biblioteki nazywa się „util”
Poniżej znajduje się sekcja android build.gradle dla aplikacji
android {
compileSdkVersion 15
buildToolsVersion '19.0.0'
defaultConfig {
minSdkVersion 15
targetSdkVersion 15
}
dependencies {
compile project(':util')
}
}
Podczas kompilacji pojawia się następujący błąd:
* What went wrong:
A problem occurred configuring project ':br'.
> Failed to notify project evaluation listener.
> Could not resolve all dependencies for configuration ':br:_DebugCompile'.
> Could not find com.bugsense.trace:bugsense:3.6.
Required by:
dss:br:unspecified > dss:util:unspecified
Mogę sprawić, by kompilacja działała, dodając Bugsense do sekcji repozytoriów pliku build.gradle dla aplikacji. Poniżej znajduje się kod, który dodałem do pliku build.gradle dla projektu aplikacji.
repositories {
mavenCentral()
maven { url 'http://www.bugsense.com/gradle/' }
}
Pamiętaj, powyższy kod znajduje się w build.gradle dla projektu aplikacji I biblioteki.
Jak uniknąć dodawania zależności Bugsense do projektów aplikacji i bibliotek?
AKTUALIZACJE:
Używam Gradle 1.8
Kompiluję z linii poleceń za pomocą „gradle clean assembleDebug”
Poniżej znajduje się kompletny plik build.gradle dla projektu aplikacji:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
//maven { url 'http://www.bugsense.com/gradle/' }
}
android {
compileSdkVersion 15
buildToolsVersion '19.0.0'
defaultConfig {
minSdkVersion 15
targetSdkVersion 15
testPackageName "com.myapp.test"
}
dependencies {
compile project(':common')
compile project(':util')
}
}
dependencies {
instrumentTestCompile 'com.jayway.android.robotium:robotium-solo:4.3'
instrumentTestCompile 'com.squareup:fest-android:1.0.+'
instrumentTestCompile 'com.squareup.spoon:spoon-client:1.0.+'
instrumentTestCompile 'com.google.guava:guava:15.0'
}
configurations { spoon }
dependencies { spoon 'com.squareup.spoon:spoon-runner:1.0.5' }