【问题标题】:android gradle -- compile two pure java projects to dexandroid gradle -- 将两个纯java项目编译成dex
【发布时间】:2013-11-11 18:57:40
【问题描述】:

我有两个纯 java 项目(:java:libs:proj1、:java:libs:proj2),它们在构建时会生成两个 classes.jar。 “组合”的两个 jar 包括我想转换为 dex jar 的确切类,即其中包含 classes.dex 的 JAR 文件。

有人可以帮我将两个纯 java 项目转换成一个包含 classes.dex 的 JAR 吗?

这是我尝试做的。

1) 创建一个单独的 Android 库项目(应用插件:'android-library')并将两个 java 项目作为依赖项。

apply plugin: 'android-library'

dependencies {
    compile project(':java:libs:proj1')
    compile project(':java:libs:proj2')
}

但是,使用这种方法,它不会生成 dex 文件。相反,它会生成一个“.aar”文件,其中仅包含两个项目的 .class 文件。如果我可以将此 .aar 文件转换为其 dex,那么这将是完美的,但显然“android-library”插件没有“dex”任务。

2) 创建一个 Android 项目(应用插件:'android')并将这两个项目作为依赖项包含在内。 (与上面类似,但使用 'android' 而不是 'android-library')。

apply plugin: 'android'

dependencies {
    compile project(':java:libs:proj1')
    compile project(':java:libs:proj2')
}

这种方法确实创建了我需要的 dex 文件,但是它还包括我的两个纯 java 项目的所有依赖项。例如,我的 java 项目依赖于 JUnit、BouncyCastle 和其他一些外部 JAva 项目。在 classes.dex 中,我看到它包含了 everything。有没有办法告诉“dex”任务不要“传递地”包含依赖项?

我只想将与我的两个 java 项目直接关联的类放入 dex 中。我希望有一个简单的方法:(

谢谢, J

【问题讨论】:

    标签: java android build gradle dex


    【解决方案1】:

    是否会修改依赖项中的编译以提供帮助?也请查看this

    25.4.7。排除传递依赖 您可以通过配置或依赖项排除传递依赖项:

    示例 25.14。排除传递依赖

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 2016-04-25
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 2017-01-23
      相关资源
      最近更新 更多