If you are looking for past changelogs, check out this page.

It has been over five years since the release of 1.9.0, the last major version of libGDX. That doesn’t mean that libGDX did not change over the last years – in fact, it has quite a lot – but we weren’t always as strict about our versioning as we should have been. We already promised to improve on that, but today we want to fulfill our promise and are proud to present to you version 1.10.0 of libGDX!

By and large, version 1.10.0 doesn’t include any shining new features, but it provides a clean cut from the past 1.9.x releases and contains a few breaking changes. So let’s dive right in and take a look at those.

Natives

A few weeks ago, Mario (our benevolent ex-dictator) briefly came back from his retirement to migrate our whole build setup to GitHub Actions. While we have already been using GitHub Actions as our CI service, up until now the natives as well as the snapshot releases were built via a self-hosted Jenkins instance. This was prone to failures and hard to maintain. As a result of this migration, building is now a lot more convenient and reproducible, which will help us keep everything up to date and allows others to take a look behind the scenes.

In the course of this update, we also changed some of the platforms, for which our natives are built:

  • Android ARMv5 (armeabi) support has been removed, as it hasn’t been compatible with the Android NDK since June 2018. To migrate your projects remove any dependency with the natives-armeabi qualifier (but not natives-armeabi-v7a!) from your gradle build file. This applies to gdx-platform, gdx-bullet-platform, gdx-freetype-platform and gdx-box2d-platform.
  • tvOS libraries have been removed, since at the moment you can’t target it with MobiVM anyway. No migration steps required.
  • Linux x86 (32-bit) support has been removed. No migration steps required.
  • Linux ARM and AARCH64 support has been added. No migration steps required.

Java 7

libGDX now requires Java 7. The only exception is the LWJGL 3 subproject, which requires Java 8. See #5839 for more information. Please note that this has no effect on the maximum Java version that is supported by a platform!

JCenter is shutting down

At the end of last month, the JCenter repository stopped accepting new submissions. This is the first step of sunsetting the repository and in February 2022 JCenter will stop serving any packages. This means that projects depending on this repo need to migrate. To update your libGDX Gradle projects, open the main build.gradle file in your project and in both of the two repositories {} sections replace jcenter() with gradlePluginPortal().

Other breaking changes

  • Scaling is now an object instead of an enum. This may change behaviour when used with serialisation.
  • Group#clear() and #clearChildren() now unfocus the children. Added clear(boolean) and clearChildren(boolean) for when this isn’t wanted. Code that overrides clear()/clearChildren() probably should change to override its counterpart taking a boolean parameter. See #6423.
  • Lwjgl3WindowConfiguration#autoIconify is enabled by default. See #6422.
  • Added a Pool#discard(T) method. If objects are freed and the pool size is above its retention limit, the objects are now discarded but not reset. To keep the old behaviour, you should override the Pool#discard(T) method to call reset(T). This is fixed in version 1.11.0.

For those of you that are still stuck on older versions of libGDX, we have compiled a list of all breaking changes from 1.9.10 to 1.10.0. This should make it easier to upgrade all in one go.

Full changelog

Updating your Gradle project is straight-forward: Check out the instructions on the wiki! The latest version of dependencies can, as always, be found here.

- [BREAKING CHANGE] Android armeabi support has been removed.
- [BREAKING CHANGE] tvOS libraries have been removed. No migration steps required.
- [BREAKING CHANGE] Linux x86 (32-bit) support has been removed. No migration steps required.
- [BREAKING CHANGE] Requires Java 7 or above.
- [BREAKING CHANGE] API Change: Scaling is now an object instead of an enum. This may change behavior when used with serialization.
- [BREAKING CHANGE] Group#clear() and #clearChildren() now unfocus the children. Added clear(boolean) and clearChildren(boolean) for when this isn't wanted. Code that overrides clear()/clearChildren() probably should change to override the (boolean) method. #6423
- [BREAKING CHANGE] Lwjgl3WindowConfiguration#autoIconify is enabled by default.
- [BREAKING CHANGE] Added a Pool#discard(T) method. If objects are freed and the pool size is above its retention limit, the objects are discarded but not reset. To keep the old behavior, you should override the Pool#discard(T) method to call #reset(T). This will be fixed in version 1.10.1.
- Architecture support: Linux ARM and AARCH64 support has been added. The gdx-xxx-natives.jar files now contain native libraries of these architectures as well.
- Scene2d.ui: Added new ParticleEffectActor to use particle effects on Stage
- API addition: iOS: Added HdpiMode option to IOSApplicationConfiguration to allow users to set whether they want to work in logical or raw pixels (default logical).
- Fix for #6377 Gdx.net.openURI not working with targetSdk 30
- API Addition: Desktop Sound now returns number of channels and sample rate.

Updated: