Я разрабатываю библиотеку для Android, которая будет использоваться во многих приложениях. Библиотека зависит от некоторых других библиотек. Например, он использует Dagger 1.2, поэтому, если приложение, которое будет включать мою библиотеку, будет использовать Dagger 2.0, проект не будет создан из-за конфликтов. Что мне делать?Как избежать конфликтов библиотек, когда кто-то использует мою андроидную библиотеку
Я попытался Jarjar, с этой рабочей 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
}
это приложение 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'
}
и это моя библиотека 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'
}
Теперь у нас та же проблема в этот момент. Мы попробовали некоторые инструменты jarjar, FadJar Gradle, и не достигаем решения. Теперь мы пытаемся использовать библиотеку [espresso solution] (https://android.googlesource.com/platform/frameworks/testing/+/android-support-test/espresso/core/build.gradle), в которой используется скрипт jarjar во время компиляции, но пока у нас нет правильного решения. – beni
Другой подход - библиотека Пикассо, которая имеет нулевые зависимости при импорте и использует библиотеку okhttp. Когда загружается в репозиторий maven, он изменяет зависимость как необязательную. Но мы не добились успеха – beni
Спасибо @beni, если мы достигнем определенного прогресса, я дам вам знать. Надеюсь, вы сделаете то же самое;) – Picci