【问题标题】:How to exclude a jar-file from my Android library build target如何从我的 Android 库构建目标中排除 jar 文件
【发布时间】:2014-12-21 23:40:46
【问题描述】:

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

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

提前谢谢你。

【问题讨论】:

    标签: android jar build gradle android-library


    【解决方案1】:

    我终于解决了我的问题。

    在我的库项目中,我添加了另一个空的 libraries 模块并将external-java-lib.jar 移动到它的libs 文件夹中。

    ma​​in模块的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。所以,这正是我想要的。

    【讨论】:

    • 唯一有效的解决方案。但是,您可以将模块分开,文件夹层次结构并不重要
    【解决方案2】:

    如果你没有使用 proguard,那么你只需使用 provided 标签

    dependencies {
        provided files('./libs/external-java-lib.jar')
    }
    

    【讨论】:

    • 这似乎只是导致同样的事情,即。罐子被包括在内了吗?
    • 不起作用。 jar 仍然包含在构建中。
    【解决方案3】:

    我不了解android studio,但它在eclipse中很容易,在eclipse中右键单击项目->属性->java构建路径,你有库和java构建路径。您可以在那里排除或包含文件。

    【讨论】:

    • 一定很简单,我只需要将jar添加到我的类路径中,并防止它被包含到库的release aar中。但我的项目在 Android 工作室并使用 Gradle。我想知道如何在 Gradle 中做到这一点。
    • 好吧,我对 gradle 了解不多,抱歉,但如果您能够执行上述步骤并再次导入 gradle,我想这将是双赢的局面:-)
    • 我将尝试将此作为我的备份计划。 :) 首先,我想等待是否有人可以帮助我配置 gradle。
    猜你喜欢
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多