这是我的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.arefin.lasttrykinvay"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
}
}
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile fileTree(dir: 'libs',include: ['*.jar'])
compile(name:'kinvey-android-2.10.5',ext:'aar')
compile 'com.android.support:appcompat-v7:23.1.1'
compile google-http-client-1.19.0.jar
compile google-http-client-android-1.19.0.jar
compile google-http-client-gson-1.19.0.jar
compile google-http-client-jackson2-1.19.0.jar
compile gson-2.1.jar guava-18.0.jar
compile jackson-core-2.1.3.jar
compile java-api-core-2.10.1.jar
compile java-api-core-2.10.5.jar
compile kinvey-android-2.10.5.aar
testCompile 'junit:junit:4.12'
}
这是错误
Error:Execution Failed for task ':app:transformClassesWithJarMergingForRelease'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/kinvey/java/AbstractClient$Builder$Option.class
当我删除
compile 'com.android.support:appcompat-v7:23.1.1'
以上错误修复但其他功能无法正常工作.喜欢的价值观/风格无法找到
Theme.AppCompat.Light.DarkActionBar
我怎么能重复输入错误?
虽然OP没有写出来,但是如果你看一下原始问题的评论,你会发现它们在libs目录中有很多.jar库文件,它们都包含在以下行中:
dependencies {
compile fileTree(dir: 'libs',include: ['*.jar'])
//...
}
> google-http-client-1.19.0.jar
> google-http-client-android-1.19.0.jar
> google-http-client-gson-1.19.0.jar
> google-http-client-jackson2-1.19.0.jar
> gson-2.1.jar
> guava-18.0.jar
> jackson-core-2.1.3.jar
> java-api-core-2.10.1.jar重复!
> java-api-core-2.10.5.jar重复!
> kinvey-android-2.10.5.aar
您可以清楚地看到java-api-core包含两次,一次用于2.10.1版本,一次用于2.10.5版本.构建系统不够智能,只能将其中一个引入,而且不应该这样.用户应该告诉构建系统要包含哪些库以及要包含哪些库.
通过从libs目录中删除java-api-core-2.10.1.jar文件,应该解决错误.
这可能不是您遇到的确切问题,但可能是类似的结果.
为了帮助避免这些情况,这里有几个最佳实践:
1.不要使用编译fileTree ….
而不是隐藏您所包含的所有.jar文件,而是显式地声明您在依赖项{}下编译的文件.这样可以更容易地查看何时出现重复,冲突和其他类似问题.
2.尽可能使用Maven而不是.jar文件.
虽然它不会抓住这个,但是通过使用Maven并在不同的版本中将相同的依赖项放两次,它应该只解决其中一个依赖项(我认为)并避免像你所看到的那样的神秘错误.