将libgdx项目导出为包括依赖项的Android库



我有两个独立的Android项目。一个是常规的Android应用程序,另一个是libgdx项目。 我的目标是能够将libgdx项目作为Android库编译成aar文件,这样我就可以在常规的非libgdxAndroid应用程序中使用它(我将从常规Android项目开始libgdx游戏的活动)。
libgdx 项目由几个模块组成(我只使用androiddesktop模块),所以在我的 libgdx 项目中,我可以找到 3 个模块:androiddesktopcore(基本上整个游戏的代码都驻留在其中)。在 Android 上编译和运行游戏时,android模块会启动,但它使用core模块作为依赖项。

当尝试将libgdx项目更改为Android库项目并将其编译为aar时,它似乎缺少所需的依赖项(例如core模块,以及一些其他依赖项)。

如何从具有所有必需依赖项的 libgdx 项目创建 aar 文件?

所以最终我设法找到了解决我的问题的方法。
让我们从我的第一印象具有误导性的事实开始,我遇到的问题不是一个libgdx具体的问题,而是一个gradle的"问题"。
简而言之,这背后的原因是 aar/jar 文件不包含传递依赖项,也没有描述库使用的依赖项的 pom 文件。 要克服这种行为,您需要以某种方式指定项目中的依赖项。您可以在 2 种方法之间进行选择:

第一种方法:
可以使用中央仓库,如JCenter,并将项目发布为库。在这种情况下,gradle 将能够使用包含依赖项列表的 pom 文件下载依赖项。

第二种方法:
您需要手动将所有依赖项复制到 libs 文件夹。您可以通过编写一个小的 gradle 任务来相对容易地做到这一点:

task copyCompileDependenciesToLibs(type: Copy) {
def libsPath = project.projectDir.toString() + "/libs"
from configurations.compile
into libsPath
}

此代码段会将所有依赖项复制到 libs 文件夹,编译库项目后,依赖项将被包含。

最新更新