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

我在 Android 应用程序中使用 libgdx 作为片段,这就是我的项目结构:

https://img1.mukewang.com/64dc9e3e0001c38c03740411.jpg

我想做的是从模块“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 我可以看到那里的应用程序。

https://img.mukewang.com/64dc9e4a0001070108660405.jpg

项目的 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

}


桃花长相依
浏览 102回答 1
1回答

白板的微信

那里有一个循环关系......两个不同的模块相互依赖。我认为这行不通。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);        }});    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java