Je développe une bibliothèque pour android qui sera utilisée dans de nombreuses applications. La bibliothèque dépend de certaines autres bibliothèques. Par exemple, il utilise Dagger 1.2, donc si une application qui inclura ma bibliothèque utilisera Dagger 2.0, le projet ne se construira pas en raison de conflits. Que puis-je faire?Comment éviter les conflits de bibliothèque lorsque quelqu'un utilise ma bibliothèque android
J'ai essayé Jarjar, avec cet espace de travail gradle
buildscript {
repositories {
jcenter()
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'net.vrallev.gradle:jarjar-gradle:1.1.0'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
c'est l'application gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.xxx.yyy.sdklauncherapp"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile project(':library')
compile 'com.google.dagger:dagger:2.2'
}
et c'est ma bibliothèque gradle
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
apply plugin: 'net.vrallev.jarjar'
jarjar {
jarJarFile 'jarjar-1.4.jar'
rules = [
'rule com.squareup.dagger.** [email protected]'
]
srcExcludes = ['META-INF/**']
outputName 'build_repackaged.jar'
outputDir 'libs'
ignoreJarJarResult false
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
jarjar 'com.squareup.dagger:dagger:1.2.2'
}
Maintenant, nous avons le même problème en ce moment. Nous avons essayé quelques outils de jarjar, FatJar de Gradle, et ne réalisons pas avec une solution. Maintenant, nous essayons la bibliothèque [solution espresso] (https://android.googlesource.com/platform/frameworks/testing/+/android-support-test/espresso/core/build.gradle) qui utilise un script jarjar à la compilation, mais nous n'avons pas encore la bonne solution. – beni
L'autre approche est la bibliothèque de Picasso qui a zéro dépendances quand elle est importée et utilise la bibliothèque d'okhttp. Quand est téléchargé dans le dépôt maven, il change la dépendance en option. Mais, nous n'avons aucun succès – beni
Merci @beni, si nous réalisons des progrès, je vous le ferai savoir. J'espère que tu feras la même chose;) – Picci