Search code examples
kotlinlibgdx

How to setup/build LibGDX + Kotlin project correctly?


I've downloaded gdx-setup.jar and try to build empty project with the following settings:

enter image description here

And here is what I get in console:

Generating app in C:\Users\Divelix\Desktop\test
Executing 'C:\Users\Divelix\Desktop\test/gradlew.bat clean --no-daemon idea'
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/4.6/userguide/gradle_daemon.html.
Daemon will be stopped at the end of the build stopping after processing
WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation'.
It will be removed at the end of 2018

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':android'.
> Failed to notify project evaluation listener.
   > com.android.build.gradle.internal.variant.BaseVariantData.getOutputs()Ljava/util/List;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 22s
Done!
To import in Eclipse: File -> Import -> General -> Existing Projects into Workspace
To import to Intellij IDEA: File -> Open -> YourProject.ipr

If I do not mark "Use Kotlin" it builds well, so why is that and what am I doing wrong?


Solution

  • Well, I've finally figured out how to build project correctly with Kotlin (and if you have trouble with gradle it also will help you). Firstly, you just should to build it without "Use Kotlin" and than than edit your project build.gradle file like this:

    buildscript {
        ext.kotlinVersion = '1.1.1'
    
        repositories {
            mavenLocal()
            mavenCentral()
            maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.3'
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
    
        }
    }
    

    Also you should delete google() if you have it after jcenter()

    In :desktop replace java with kotlin plugin and add kotlin-stdlib

    project(":desktop") {
        apply plugin: "kotlin"
    
        dependencies {
            compile project(":core")
            compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
            compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
            compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
            compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
        }
    }
    

    In :android add kotlin-android plugin and kotlin-stdlib

    project(":android") {
        apply plugin: "android"
        apply plugin: "kotlin-android"
    
        configurations { natives }
    
        dependencies {
            compile project(":core")
            compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
            natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
            natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
            natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
            natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
            natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
            compile "com.badlogicgames.ashley:ashley:$ashleyVersion"
            compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
            natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
            natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
            natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
            natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
            natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
            compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
    
        }
    }
    

    In :core replace java with kotlin plugin and add kotlin-stdlib

    project(":core") {
        apply plugin: "kotlin"
    
        dependencies {
            compile "com.badlogicgames.gdx:gdx:$gdxVersion"
            compile "com.badlogicgames.ashley:ashley:$ashleyVersion"
            compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
            compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
        }
    }
    

    If you have just kotlin issue it would be enough.

    If you also have gradle issue like me, so open gradle-wrapper.properties and fix gradle version to 3.3:

    distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip