Ich entwickle eine Bibliothek für Android, die in vielen Anwendungen verwendet wird. Die Bibliothek hängt von einigen anderen Bibliotheken ab. Zum Beispiel wird Dagger 1.2 verwendet. Wenn eine App, die meine Bibliothek enthält, Dagger 2.0 verwendet, wird das Projekt aufgrund von Konflikten nicht erstellt. Was kann ich tun?So vermeiden Sie Bibliothekskonflikte, wenn jemand meine Android-Bibliothek verwendet
Ich versuchte Jarjar, mit diesem Arbeitsbereich 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
}
dies der gradle
App istapply 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'
}
und das ist mein Bibliothek 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'
}
Jetzt haben wir das gleiche Problem in diesem Moment. Wir haben einige Jarjar-Tools, Gradle's FatJar, ausprobiert und erreichen dies nicht mit einer Lösung. Jetzt versuchen wir die Bibliothek [espresso solution] (https://android.googlesource.com/platform/frameworks/testing/+android-support-test/espresso/core/build.gradle), die ein Jarjar-Skript verwendet in Kompilierzeit, aber wir haben noch keine richtige Lösung. – beni
Andere Annäherung ist Picasso-Bibliothek, die keine Abhängigkeiten hat, wenn es importiert wird und es okhttp-Bibliothek verwendet. Wann wird in das Maven-Repository hochgeladen, ändert sich die Abhängigkeit als optional. Aber wir haben keinen Erfolg – beni
Dank @beni, wenn wir etwas Fortschritt erzielen, werde ich Sie wissen lassen. Ich hoffe du machst das selbe;) – Picci