diff --git a/spine-android/gradle/libs.versions.toml b/spine-android/gradle/libs.versions.toml index a3d4d9156..075d49b1f 100644 --- a/spine-android/gradle/libs.versions.toml +++ b/spine-android/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -agp = "8.3.1" +agp = "8.11.2" kotlin = "1.9.0" coreKtx = "1.10.1" junit = "4.13.2" diff --git a/spine-android/gradle/wrapper/gradle-wrapper.properties b/spine-android/gradle/wrapper/gradle-wrapper.properties index 2cf9d9560..77f422ba5 100644 --- a/spine-android/gradle/wrapper/gradle-wrapper.properties +++ b/spine-android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Apr 25 11:12:13 CEST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index 050d04a1e..00bfa1842 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -351,10 +351,18 @@ public class SpineView extends View implements Choreographer.FrameCallback { } private void loadFrom (AndroidSkeletonDrawableLoader loader) { + if (controller == null) { + throw new IllegalStateException( + "SpineController is not set. When using SpineView from XML, call setController(...) before loadFromAsset/loadFromFile/loadFromHttp/loadFromDrawable."); + } Handler mainHandler = new Handler(Looper.getMainLooper()); Thread backgroundThread = new Thread( () -> { final AndroidSkeletonDrawable skeletonDrawable = loader.load(); mainHandler.post( () -> { + if (controller == null) { + throw new IllegalStateException( + "SpineController became null before initialization. Ensure setController(...) is called and not cleared until loading completes."); + } computedBounds = boundsProvider.computeBounds(skeletonDrawable); updateCanvasTransform();