如何将 libgdx 添加到现有项目

How to add libgdx to existing project

提问人:ghita 提问时间:6/15/2015 更新时间:2/26/2020 访问量:3320

问:

我提供了一个在 android 中制作的应用程序,它有一个导航抽屉,里面有一个游戏列表。我必须创建另一个游戏并把它放在那里。必须由我创建的游戏必须使用 libGDX,但原始应用程序没有使用此库。

可以这样做吗?如果是,如何将 libgdx 添加到现有项目中。在 github 上,我只找到了如何使用 libGDx 启动一个新项目,而不是如何将其添加到现有代码中。谢谢。

安卓 libgdx

评论


答:

1赞 seb-o-matic 6/15/2015 #1

一般来说,你想要的都是可能的,我认为你最好的选择是用他们的 GUI 创建一个新的 libgdx 项目,然后手动合并所需的文件。

评论

0赞 ghita 6/15/2015
井。。他们的项目,有点大,他们从我的游戏中获取分数并将其放入一些数据库中,我的游戏在启动时,会采用他们提供的用户 ID,,, 我不确定启动一个新的 libGDX 项目是否是一个好主意,我只需要做我的游戏,我问是否可以只在我的游戏中使用 libGDX, 与他们的项目分离......
0赞 seb-o-matic 6/15/2015
这到底是怎么回事?谁在创建 libgdx 部分,谁在创建数据库,谁拥有需要将游戏集成到其中的应用程序?
0赞 ghita 6/15/2015
我正在创建 libdgx 游戏,数据库和应用程序将集成游戏,由客户端提供。唯一的问题是,是否可以只在我的游戏中使用 libgdx,而不是在整个项目中,以及如何做到这一点
0赞 seb-o-matic 6/15/2015
libGDX 是一个依赖项,因此在应用程序发布时需要包含它,因为应用程序的一部分(您的游戏)需要它才能运行。应用程序的其余部分可以独立于 libGDX 和您添加的游戏运行。
0赞 ghita 6/15/2015
“应用程序的其余部分可以独立于 libGDX 和您添加的游戏运行。” 这就是我想听到的!你能给我一个关于如何将libgdx添加到现有项目的建议吗?所以我可以在我的游戏中使用它吗?
2赞 Luis Fernando Frontanilla 2/26/2020 #2

您可以通过以下 2 个步骤实现此目的:

1. 将 LibGDX 添加到您的项目中

在您的 android gradle 文件上:build.gradle(应用或 android 模块)

dependencies {
    ...

    // Add this line, it is recommended to use the latest LibGDX version
    api "com.badlogicgames.gdx:gdx-backend-android:1.9.10"
}

2. 为视图初始化 LibGDX 或使用 LibGDX 托管活动

选项 1:初始化视图
由于您有一个导航抽屉和更多 android 原生代码,因此此选项更适合您的需求。从这个问题(如何在 android 中添加 LibGDX 作为子视图):

AndroidApplication 类(扩展活动)具有一个名为 initializeForView(ApplicationListener, AndroidApplicationConfiguration) 的方法,该方法将返回一个可添加到布局中的视图。

-- 马特斯曼

此外,这里还有关于如何实现这一点的文档(基于 Fragment 的 LibGDX)。

选项 2:使用托管活动
这是 LibGDX 的默认/最常见用法,您需要按如下方式更改代码:

  • 您的活动需要扩展 Android 应用程序:
public class MainActivity extends AndroidApplication {
  • 创建一个扩展 Game 或 ApplicationAdapter 的类:
import com.badlogic.gdx.Game;

public class LibGDXGame extends Game {

    @Override
    public void create() {
        System.out.println("Success!");
    }
}
  • 初始化 LibGDX 托管活动:
import android.os.Bundle;

import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;

public class MainActivity extends AndroidApplication {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        initialize(new LibGDXGame(), config);
    }
}

评论

0赞 Tenfour04 2/26/2020
您还需要将本机库复制到您的构建中。在使用 Libgdx 设置 GUI 创建的项目的 Android/build.gradle 中有一个脚本可以做到这一点。您还需要在 gradle 中指定 Android 原生库。
0赞 Tenfour04 2/27/2020
没有库,JNI 代码怎么可能运行?当您调用以启动 Gdx 时,它会调用 System.loadLibrary,如果缺少相应的 .so 文件,它将崩溃。initialize
1赞 Sergio 8/18/2020
使用您的步骤(选项 2)我遇到了异常:“由以下原因引起:com.badlogic.gdx.utils.GdxRuntimeException:无法为目标加载共享库”gdx“:Linux,32 位在 com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:125) at com.badlogic.gdx.utils.GdxNativesLoader.load(GdxNativesLoader.java:33) ...原因:java.lang.UnsatisfiedLinkError:dlopen 失败:命名空间“classloader-namespace”无法访问需要库“/system/product/lib/libgdx.so”或“/apex/com.android.runtime/lib/libnativeloader.so”无法访问 dlopen
0赞 Luis Fernando Frontanilla 8/19/2020
是的,你是对的,我刚刚测试了我的选项 2 并且它崩溃了,当我第一次回答问题时,它以某种方式起作用,我在发布之前尝试过。解决方案是按照 Tenfour04 的说法去做,可悲的是,我从来没有这样做过,也不知道该怎么做。
1赞 jbcaveman 4/11/2022
以下是更新的链接或任何查找 FragmentActivity(子视图)文档的人:libgdx.com/wiki/app/starter-classes-and-configuration