将 libgdx 项目导出为 Android 库,包括依赖项
Export libgdx project as Android library including dependencies
我有两个独立的 Android 项目。一个是常规 Android 应用程序,另一个是 libgdx 项目。
我的目标是能够将 libgdx 项目作为 Android 库编译到 aar 文件中,这样我就可以在常规的非 libgdx、Android 应用程序中使用它(我将从常规 Android 项目开始 libgdx 游戏的 activity。
libgdx 项目由几个模块组成(我只使用 android
和 desktop
模块),所以在我的 libgdx 项目中我可以找到 3 个模块:android
、desktop
和 core
(基本上整个游戏的代码都位于此处)。在 Android 上编译和 运行 游戏时,android
模块启动,但它使用 core
模块作为依赖项。
当尝试将 libgdx 项目更改为 Android 库项目并将其编译为 aar 时,它似乎缺少所需的依赖项(如 core
模块,在除了一些其他依赖项)。
如何从 libgdx 项目创建一个包含所有需要的依赖项的 aar 文件?
所以最终我设法找到了解决问题的方法。
让我们从我的第一印象是误导的事实开始,我遇到的问题不是 libgdx
特定问题,而是 gradle
"problem".
简而言之,其背后的原因是 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 文件夹,一旦您编译了库项目,这些依赖项就会包含在内。
我有两个独立的 Android 项目。一个是常规 Android 应用程序,另一个是 libgdx 项目。
我的目标是能够将 libgdx 项目作为 Android 库编译到 aar 文件中,这样我就可以在常规的非 libgdx、Android 应用程序中使用它(我将从常规 Android 项目开始 libgdx 游戏的 activity。
libgdx 项目由几个模块组成(我只使用 android
和 desktop
模块),所以在我的 libgdx 项目中我可以找到 3 个模块:android
、desktop
和 core
(基本上整个游戏的代码都位于此处)。在 Android 上编译和 运行 游戏时,android
模块启动,但它使用 core
模块作为依赖项。
当尝试将 libgdx 项目更改为 Android 库项目并将其编译为 aar 时,它似乎缺少所需的依赖项(如 core
模块,在除了一些其他依赖项)。
如何从 libgdx 项目创建一个包含所有需要的依赖项的 aar 文件?
所以最终我设法找到了解决问题的方法。
让我们从我的第一印象是误导的事实开始,我遇到的问题不是 libgdx
特定问题,而是 gradle
"problem".
简而言之,其背后的原因是 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 文件夹,一旦您编译了库项目,这些依赖项就会包含在内。