首页 > 解决方案 > 尝试将 facebook 与 libgdx 集成,在哪里实现此代码,因为没有“模块:应用程序”存在?

问题描述

根据脸书:-

“将以下内容添加到(module: app) 文件的dependencies {}部分以编译最新版本的 Facebook SDK:build.gradle

implementation 'com.facebook.android:facebook-android-sdk:[4,5)'"

我在 android studio 项目中没有看到任何名为 app 的模块。在哪里添加上面的行?

标签: libgdxandroid-studio-2.3

解决方案


module:app在这种情况下,仅表示主要的 android 应用程序。因此,您应该将依赖项添加到 android 模块。

然后我打赌你的下一个问题是如何从核心使用这个库,因为 Android 模块依赖于核心模块,反之亦然,所以你无法访问核心项目中的库。一种方法是将合约传递给平台启动器,每个启动器都以不同的方式实现它。

//Simple contract
public interface IPlatformContract {
    void runThis();
}

// Core project (MyGame)
private IPlatformContract platformContract;
public MyGame(IPlatformContract platformContract) {
    this.platformContract = platformContract;
}

//DesktopLauncher
public static void main (String[] arg) {
    LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();

    // Launch desktop with it's own implementation of the contract.
    new LwjglApplication(new MyGame(new IPlatformContract() {
        @Override
        public void runThis() {
            System.out.println(" I run on desktop!");
        }
    }), config);
}

//AndroidLauncher, different way. Here the class itself implements the contract.
public class AndroidLauncher extends AndroidApplication implements IPlatformContract{
    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        initialize(new LibgdxTestEnvironment(this), config);
    }

    @Override
    public void runThis() {
        System.out.println("I run on android!");
    }
}

您可以将合同传递给其他类,例如核心项目中的屏幕,以便您可以访问它。你甚至可以制作一个单例。


推荐阅读