【问题标题】:How to add libgdx to existing project如何将 libgdx 添​​加到现有项目
【发布时间】:2015-06-15 07:44:48
【问题描述】:

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

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

【问题讨论】:

    标签: android libgdx


    【解决方案1】:

    您可以通过以下两个步骤来实现:

    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 的代码,因此此选项更适合您的需求。来自this question (How to add LibGDX as a sub view in android)

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

    -- Matsemann

    还有here关于如何实现这个的文档(基于片段的LibGDX)。

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

    • 您的 Activity 需要扩展 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);
        }
    }
    

    【讨论】:

    • 您还需要将本机库复制到您的构建中。在使用 Libgdx 设置 GUI 制作的项目的 Android/build.gradle 中有一个脚本可以执行此操作。您还需要在 gradle 中指定 Android 原生库。
    • JNI 代码如何在没有库的情况下运行?在您调用initialize 启动 Gdx 的那一刻,它会调用 System.loadLibrary,如果缺少相应的 .so 文件,它将崩溃。
    • 使用您的步骤(选项 2)我遇到了一个异常:“原因:com.badlogic.gdx.utils.GdxRuntimeException:无法为目标加载共享库 'gdx':Linux,32-位在 com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:125) 在 com.badlogic.gdx.utils.GdxNativesLoader.load(GdxNativesLoader.java:33) ... 引起:java.lang.UnsatisfiedLinkError :dlopen失败:名称空间“classloader-namespace”无法访问“/apex/com.android.runtime/lib/libnativeloader.so”需要或dlopened的库“/system/product/lib/libgdx.so”跨度>
    • 是的,你是对的,我刚刚测试了我的选项 2 并且它崩溃了,当我第一次回答问题时它以某种方式工作,但我在发布之前尝试了它。解决方案是按照 Tenfour04 的说法,遗憾的是,我从来没有这样做过,也不知道该怎么做。
    • 这里是更新的链接或任何正在寻找 FragmentActivity(子视图)文档的人:libgdx.com/wiki/app/starter-classes-and-configuration
    【解决方案2】:

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

    【讨论】:

    • 好吧..他们的项目,有点大,他们从我的游戏中获取分数并将其放入一些数据库中,我的游戏游戏在启动时,采用他们提供的用户ID,,,我'不确定启动一个新的 libGDX 项目是否是个好主意,我只需要做我的游戏,我问是否可以只在我的游戏中使用 libGDX,与他们的项目分开..
    • 到底发生了什么?谁在创建 libgdx 部分,谁在创建数据库以及谁拥有需要将游戏集成到其中的应用程序?
    • 我正在创建 libdgx 游戏、数据库和将集成游戏的应用程序由客户端提供。唯一的问题是是否可以只在我的游戏中使用 libgdx,而不是在整个项目中,以及如何做到这一点
    • 好吧,libGDX 是一个依赖项,因此在发布应用程序时需要包含它,因为应用程序的一部分(您的游戏)需要它运行。应用程序的其余部分可以独立于 libGDX 和您添加的游戏运行。
    • “应用程序的其余部分可以独立于 libGDX 和您添加的游戏运行。”这就是我想听到的!你能给我一个关于如何将 libgdx 添​​加到现有项目的建议吗?所以我可以在我的游戏中使用它?
    猜你喜欢
    • 2017-09-24
    • 2019-07-17
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多