我有一个android studio项目,该项目有一个应用程序模块和一个库模块。应用程序模块只是库模块的演示。图书馆模块依赖于第三方,为了简单起见,我们将其称为external.jar
。
Android studio可以成功构建库模块,生成名为classes.jar
的库。
我注意到android studio还将资源从external.jar
复制到classes.jar
以及.class文件。当我尝试从应用程序模块构建apk时出现问题,因为应用程序模块依赖于external.jar
,android studio拒绝组装最终的apk由于重复资产,并显示以下错误消息:
错误:任务执行失败':app:transformResourcesWithMergeJavaResForDebug'。
com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:在APK assets / ap1.data中复制的重复文件 File1:/Users/skyrim/android/Demo/app/libs/classes.jar File2:/Users/skyrim/android/Demo/app/libs/external.jar
我必须以二进制形式向第三方发布库模块,他们也可以使用classes.jar
和external.jar
,因此必须排除不必要的资产。
以下是我的图书馆模块build.gradle
:
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
useLibrary 'org.apache.http.legacy'
defaultConfig {
minSdkVersion 15
targetSdkVersion 23
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.2.0'
}
如何阻止android studio将资源从external.jar
复制到classes.jar
?当然,我可以简单地解压缩classes.jar
并移动不必要的资产并重新压缩它,但我更喜欢一些不太讨厌的解决方案。
我是Android开发和gradle构建系统的新手,欢迎任何建议。