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!");
}
}
Вы можете передать контракт другим классам, таким как экраны в вашем основном проекте, чтобы иметь к нему доступ. Вы даже можете сделать синглтон.