3

我有两个纯 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 中,我看到它包含了一切。有没有办法告诉“dex”任务“传递”不包括依赖项?

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

谢谢,J

4

1 回答 1

0

将修改依赖项中的编译以提供帮助吗?也请检查这个

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

例 25.14。排除传递依赖

于 2017-06-03T03:51:35.637 回答