Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将Firebase添加到2模块LibGDX项目中_Java_Android_Firebase_Gradle_Libgdx - Fatal编程技术网

Java 无法将Firebase添加到2模块LibGDX项目中

Java 无法将Firebase添加到2模块LibGDX项目中,java,android,firebase,gradle,libgdx,Java,Android,Firebase,Gradle,Libgdx,我一直在尝试将Firebase数据库添加到我的学校项目中,该项目使用LibGDX。它有两个子项目模块:core和android 在尝试将com.google.firebase:firebase数据库实现到我的gradle文件时,我只能从android模块访问firebase函数,该模块基本上没有代码。当我在core/build.gradle中编译库时,我得到了这个错误:模块依赖于一个或多个Android库,但它是一个jar 我尝试使用其他所有实现Firebase的库,但没有多大成功。我已经在底部

我一直在尝试将Firebase数据库添加到我的学校项目中,该项目使用LibGDX。它有两个子项目模块:core和android

在尝试将com.google.firebase:firebase数据库实现到我的gradle文件时,我只能从android模块访问firebase函数,该模块基本上没有代码。当我在core/build.gradle中编译库时,我得到了这个错误:模块依赖于一个或多个Android库,但它是一个jar

我尝试使用其他所有实现Firebase的库,但没有多大成功。我已经在底部包含了我的gradle代码

谢谢

这是我的毕业代码:

core/build.gradle

project/build.gradle

android/build.gradle


Firebase是与平台相关的库。它对Android和IOS操作系统有不同的实现。核心模块应该只包含公共业务逻辑,但您可以在此模块中创建MyDatabase接口,并在某些平台上单独实现

首先,您需要在核心模块中为MyDatabase实现创建holder类:

public class MyDatabaseHolder {

    private static MyDatabase DB;

    public static void setDb(MyDatabase db) {
        DB = db;
    }

    public static MyDatabase getDb(MyDatabase db) {
        return DB;
    }

    public interface MyDatabase {
        void saveString(String string);
    }
}
现在您可以使用它访问核心模块中的MyDatabase实例:

public class MyDatabaseHolder {

    private static MyDatabase DB;

    public static void setDb(MyDatabase db) {
        DB = db;
    }

    public static MyDatabase getDb(MyDatabase db) {
        return DB;
    }

    public interface MyDatabase {
        void saveString(String string);
    }
}
MyDatabase的实现和初始化MyDatabaseHolder将在Android或IOS模块中:

实施:

public class AndroidDatabase implements MyDatabase {

    @Override
    public void saveString(String string) {
        // here you have access to Firebase API
    }
}
初始化:

public class AndroidLauncher extends AndroidApplication {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyDatabaseHolder.setDb(new AndroidDatabase());
    }
} 

你能详细说明一下吗?我真的不明白您所说的核心模块应该只包含公共业务逻辑是什么意思。如果我在Core中创建一个接口,它仍然无法识别Firebase。@YoavGilad我已经编写了代码来解释主要思想。谢谢你的帮助!不幸的是,我不认为这是一条路要走。我想我无法访问FirebaseMy数据库?从核心模块开始。因为它没有在模块中实现,所以我不能在core中的任何地方引用它。@YoavGilad您不需要在core模块中直接使用Firebase API。在core中,您只需使用带有所需方法签名的接口MyDatabase。MyDatabase的实现AndroidDatabase类对Firebase具有完全访问权限-在此处编写Firebase相关代码
public class MyCoreClass {

    public void test() {
        MyDatabaseHolder.getDb().saveString("It works!");
    }
}
public class AndroidDatabase implements MyDatabase {

    @Override
    public void saveString(String string) {
        // here you have access to Firebase API
    }
}
public class AndroidLauncher extends AndroidApplication {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyDatabaseHolder.setDb(new AndroidDatabase());
    }
}