如何从我的Android库构建目标中排除jar文件

时间:2014-10-26 18:51:08

标签: android jar build gradle android-library

我正在使用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

我在网上找不到我的问题的答案,所以我觉得我想要的是一个糟糕的设计。我还能做什么?

提前谢谢。

3 个答案:

答案 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构建路径。在那里,您可以排除或包含文件。