【发布时间】:2016-04-07 10:47:40
【问题描述】:
我正在为 android 开发一个库,该库将在许多应用程序中使用。 该库依赖于其他一些库。 例如,它使用 Dagger 1.2,因此如果包含我的库的应用程序将使用 Dagger 2.0,则项目将不会因为冲突而构建。 我能做什么?
我用这个工作区 gradle 尝试了 Jarjar
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.** ext.com.squareup.dagger.@1'
]
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 工具,Gradle 的FatJar,并没有通过解决方案来实现。现在,我们正在尝试在编译时使用 jarjar 脚本的 espresso solution 库,但我们还没有正确的解决方案。
-
其他方法是 Picasso 库,它在导入时具有零依赖关系,它使用 okhttp 库。当上传到 maven 存储库时,它将依赖项更改为可选。但是,我们没有任何成功
-
谢谢@beni,如果我们取得了一些进展,我会告诉你的。我希望你也这样做;)
标签: android android-studio android-gradle-plugin conflicting-libraries jarjar