【发布时间】:2015-06-15 07:44:48
【问题描述】:
我提供了一个用 android 制作的应用程序,它有一个导航抽屉,里面有一个游戏列表。我必须创造另一个游戏并把它放在那里。必须由我创建的游戏必须使用 libGDX,但原始应用程序没有使用此库。
可以这样做吗?如果是,我如何将 libgdx 添加到现有项目中。在 github 上,我只找到了如何使用 libGDx 开始一个新项目,而不是如何将其添加到现有代码中。谢谢。
【问题讨论】:
我提供了一个用 android 制作的应用程序,它有一个导航抽屉,里面有一个游戏列表。我必须创造另一个游戏并把它放在那里。必须由我创建的游戏必须使用 libGDX,但原始应用程序没有使用此库。
可以这样做吗?如果是,我如何将 libgdx 添加到现有项目中。在 github 上,我只找到了如何使用 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"
}
选项 1:为视图初始化
由于您有一个导航抽屉和更多原生于 android 的代码,因此此选项更适合您的需求。来自this question (How to add LibGDX as a sub view in android):
AndroidApplication 类(它扩展了活动)有一个名为 initializeForView(ApplicationListener, AndroidApplicationConfiguration) 的方法,该方法将返回一个可以添加到布局中的视图。
-- Matsemann
还有here关于如何实现这个的文档(基于片段的LibGDX)。
选项 2:使用托管活动
这是 LibGDX 的默认/最常见用法,您需要按如下方式更改代码:
public class MainActivity extends AndroidApplication {
import com.badlogic.gdx.Game;
public class LibGDXGame extends Game {
@Override
public void create() {
System.out.println("Success!");
}
}
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);
}
}
【讨论】:
initialize 启动 Gdx 的那一刻,它会调用 System.loadLibrary,如果缺少相应的 .so 文件,它将崩溃。
通常你想要的都是可能的,我认为你最好的选择是使用他们的 GUI 创建一个新的 libgdx 项目,然后手动合并所需的文件。
【讨论】: