我正在使用Android Studio并拥有多个依赖相同代码的应用。我将共享代码移到了一个单独的库中,以便将其包含在我的应用程序中。
我为此目的创建的库项目( MyLib )需要一个jar文件来编译,所以我将它添加到项目的libs目录中。
MyLib 主模块的build.gradle
如下所示:
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "com.example.android"
minSdkVersion 9
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
}
}
}
dependencies {
compile files('./libs/external-java-lib.jar')
}
当我构建项目时,gradle会生成一个包含external-java-lib.jar
的jar文件。
我希望我的Android应用程序项目提供“external-java-lib.jar”,而不是MyLib。因为在我的应用中,我可能会使用不同版本的external-java-lib.jar
。
如何配置Gradle以从我的库项目构建中排除external-java-lib.jar
?
我在网上找不到我的问题的答案,所以我觉得我想要的是一个糟糕的设计。我还能做什么?
提前谢谢。
答案 0 :(得分:13)
我终于解决了我的问题。
在我的图书馆项目中,我添加了另一个空库模块,并将external-java-lib.jar
移至其libs
文件夹。
在主模块的build.gradle
中,我添加了依赖项:
dependencies {
compile project(':libraries')
}
我的目录结构现在是:
MyLibrary
├── build.gradle
├── gradle.properties
├── main
│ ├── build.gradle
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java ...
│ └── res ...
├── libraries
│ ├── build.gradle
│ ├── libs
│ │ ├── external-lib-1.jar
│ │ └── external-lib-2.jar
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java ...
│ └── res ...
└── settings.gradle
构建库后,输出aar-package中没有external-java-lib.jar
。所以,这正是我想要的。
答案 1 :(得分:1)
如果您没有使用proguard,那么您只需使用提供的标记
dependencies {
provided files('./libs/external-java-lib.jar')
}
答案 2 :(得分:0)
我不知道android studio,但它在eclipse中很容易,在eclipse中右击项目 - > properties-> java build path那里有库和java构建路径。在那里,您可以排除或包含文件。