提问人:ghita 提问时间:6/15/2015 更新时间:2/26/2020 访问量:3320
如何将 libgdx 添加到现有项目
How to add libgdx to existing project
问:
我提供了一个在 android 中制作的应用程序,它有一个导航抽屉,里面有一个游戏列表。我必须创建另一个游戏并把它放在那里。必须由我创建的游戏必须使用 libGDX,但原始应用程序没有使用此库。
可以这样做吗?如果是,如何将 libgdx 添加到现有项目中。在 github 上,我只找到了如何使用 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
评论