为了账号安全,请及时绑定邮箱和手机立即绑定

Android 应用程序中看不到导入的依赖模块类 LibGDX

Android 应用程序中看不到导入的依赖模块类 LibGDX

桃花长相依 2023-08-16 17:58:59
我在 Android 应用程序中使用 libgdx 作为片段,这就是我的项目结构:我想做的是从模块“my-gdx-game-core”调用模块“app”类,以便我可以在 libGDX 游戏和 Android 应用程序之间进行通信。顺便说一下,我可以来回调用my-gdx-game-android , app这样我就可以在 android 片段内开始游戏。my-gdx-game-core my-gdx-game-android.尽管我将应用程序添加为 my-gdx-game-core 的依赖项,但它没有被看到。Gradle 同步成功,但由于某种原因我无法访问类。另外,如果我右键单击“my-gdx-game-core”模块并检查依赖项从 android studio 我可以看到那里的应用程序。项目的 build.gradle:LibGDXInAndroidKotlin:// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {    ext.kotlin_version = '1.3.20'    repositories {        google()        jcenter()        mavenLocal()        mavenCentral()        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }    }    dependencies {        classpath 'com.android.tools.build:gradle:3.3.2'        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}allprojects {    repositories {        google()        jcenter()        mavenLocal()        mavenCentral()        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }        maven { url "https://oss.sonatype.org/content/repositories/releases/" }    }}project.ext {    minSdkVersion = 16    targetSdkVersion = 28    compileSdkVersion = 28    gdxVersion = '1.9.10'}task clean(type: Delete) {    delete rootProject.buildDir}
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

那里有一个循环关系......两个不同的模块相互依赖。我认为这行不通。


LibGDX 项目通常设置有一个独立于平台的核心模块,然后是依赖于该核心的 android 和桌面模块。这使您可以在桌面上非常快速地进行迭代,而无需在大部分开发过程中一遍又一遍地编译和安装 Android 版本。


如果您确实不关心能够在计算机上进行测试的好处,那么您根本不需要核心模块。你只需将所有内容都放入 Android 即可。您现在尝试做的事情实际上违背了拥有单独核心模块的目的。


不过,我建议将它们分开,以防您改变主意或决定移植到 iOS 等其他平台。


如果您需要从 调用android特定代码core,则不需要依赖该android模块。您可以创建一个传递给游戏构造函数的接口。例如,如果你想显示一个Android Toast,你可以在以下位置创建一个这样的界面core:


public interface PlatformAdapter {

    void showToast(String message);

}

在您的游戏中,从构造函数捕获对它的引用,并在您希望 Android 执行某些操作时调用适配器:


private PlatformAdapter adapter;


public MyGame (PlatformAdapter adapter){

    this.adapter = adapter;

}


void showToast(String message){

    if (adapter != null) adapter.showToast(message);

}

然后在您的android模块中,您可以将适配器传递到您的游戏中。例如:


public class AndroidLauncher extends AndroidApplication implements PlatformAdapter {

    @Override

    protected void onCreate (Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();

        config.r = 8;

        config.g = 8;

        config.b = 8;

        config.a = 8;

        config.useWakelock = true;

        initialize(new MyGame(this), config);

    }


    @Override

    public void showToast(String message){

        runOnUiThread( new Runnable(){ public void run() {

            Toast.makeText(this, message, Toast.LENGTH_SHORT);

        }});

    }

}


查看完整回答
反对 回复 2023-08-16
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信