我有两个独立的Android项目。一个是常规Android应用程序,另一个是libgdx项目。
我的目标是能够将libgdx项目作为Android库编译成aar文件,所以我可以在常规的非libgdx Android应用程序中使用它(我将从常规的Android项目启动libgdx游戏的活动) 。
libgdx项目由几个模块组成(我只使用android
和desktop
模块),所以在我的libgdx项目中我可以找到3个模块:android
,{{1} }和desktop
(基本上整个游戏的代码都在这里)。在Android上编译和运行游戏时,core
模块会启动,但它会使用android
模块作为依赖项。
当尝试将libgdx项目更改为Android库项目并将其编译为aar时,似乎它缺少所需的依赖项(如core
模块,以及其他一些依赖项。)
如何从libgdx项目创建一个具有所有必需依赖项的aar文件?
答案 0 :(得分:0)
所以最终我设法找到解决问题的方法
让我们首先看到我的第一印象是误导,我遇到的问题不是libgdx
特定的问题,而是gradle
"问题"。
简而言之,其背后的原因是aar / jar文件不包含传递依赖项,并且没有pom文件来描述库使用的依赖项。
要克服此行为,您需要以某种方式指定项目中的依赖项。您可以选择两种方法:
第一种方法:
您可以使用中央存储库(例如JCenter),并将项目发布为库。在这种情况下,gradle将能够使用包含依赖项列表的pom文件下载依赖项。
第二种方法:
您需要手动将所有依赖项复制到libs文件夹。通过编写一个小的gradle任务,你可以相对容易地做到这一点:
task copyCompileDependenciesToLibs(type: Copy) {
def libsPath = project.projectDir.toString() + "/libs"
from configurations.compile
into libsPath
}
此代码段将所有依赖项复制到libs文件夹,编译库项目后,将包含依赖项。