我使用gradle构建一个需要外部jar文件进行构建的Android项目(“projectA”)。
我有第二个项目(在这种情况下是Unity3d,所以我们称之为“projectU”),它创建了一个jar文件等等。此外部项目是通过单独的build.gradle文件构建的。
在通过gradle构建projectA之前,我构建了projectU。然后,将几个文件从projectU的完成版本复制到projectA的gradle Android项目目录中。
需要从projectU复制到projectA的文件:
1。)进入projectA / assets /的项目数据文件 2.)进入projectA / src / main / jniLibs /的本机库 3.)一个名为unity-classes.jar的文件,它进入projectA / libs / unity-classes.jar
当我手动复制这些文件然后构建projectA时,它运行良好。
我现在想通过Gradle自动执行此操作。我有一个projectU的build.gradle和一个projectA。 projectA中的一个任务将上述文件从projectU复制到projectA的项目目录中。
当我通过命令行手动构建projectU,然后在该projectA之后,它完美地运行:
gradlew:projectU:build gradlew:projectA:汇编
但是当我将projectU设置为projectA的build.gradle内的projectA的依赖项时,projectA的构建失败了,因为它无法“看到”“unity-classes.jar”文件。就好像文件早于编译目录一样。
如果我第二次运行相同的构建(之前没有清理),它可以正常工作,因为unity-classes.jar文件已经存在并且可以通过projectA的gradle构建找到。
问题:
1.。)如何确保我的projectU构建以及projectA中复制文件的任务在projectA中的任何android任务(或评估?)之前运行? 或者
2.。)我在哪里必须复制unity-classes.jar文件,以便将它包含在projectA的java编译中?
或者有不同的方法吗?
谢谢!
答案 0 :(得分:0)
是的,你可以这样做。我在使用Gradle之前已经完成了它,但它已经很长时间了,我不记得了。我去年一直在使用Maven,它也可以从系统加载文件。良好的依赖管理系统为您提供了这种灵活性。
this link对你有帮助吗?
答案 1 :(得分:0)
如果我已经理解了你在第二个问题上想要实现的目标,我会建议一个" libs"包含unity-classes.jar的项目A中的目录,然后在你的依赖项(build.gradle)中,这应该找到它..
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs') }
也许在libs文件夹中保留unity-classes.jar的副本,这样你的项目就可以构建。
希望这对你有用。