android gradle - 将两个纯java项目编译为dex

时间:2013-11-11 18:57:40

标签: java android build gradle dex

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

有人可以帮助我将两个纯Java项目转换为包含classes.dex的单个JAR吗?

这是我尝试过的。

1)创建一个单独的Android库项目(apply plugin:'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项目(apply plugin:'android')并将这两个项目包含为depenendencies。 (与上面类似但使用'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。我希望有一个简单的方法:(

谢谢, Ĵ

1 个答案:

答案 0 :(得分:0)

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

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

例25.14。排除传递依赖