Проект LibGDX написан на Scala, на Android, используя IntelliJ

Поэтому я работал над проектом LibGDX в IntelliJ v12.1.6 с использованием Scala после настройки с помощью этого учебника: http://www.gamefromscratch.com/post/2013/12/01/Using-LibGDX-with-IntelliJ -with-Gradle.aspx . Однако я заметил, что при тестировании игры на моем устройстве Android я получаю следующую ошибку

12-04 17:46:22.483: ERROR/AndroidRuntime(18951): FATAL EXCEPTION: GLThread 475 Process: com.voliant.rsoss, PID: 18951 java.lang.NoClassDefFoundError: scala.Predef$ at com.voliant.rsoss.Actors.Player.act(Player.scala:20) at com.badlogic.gdx.scenes.scene2d.Group.act(Group.java:48) at com.badlogic.gdx.scenes.scene2d.Stage.act(Stage.java:225) at com.badlogic.gdx.scenes.scene2d.Stage.act(Stage.java:189) at com.voliant.rsoss.Screens.GameScreen.render(GameScreen.scala:46) at com.badlogic.gdx.Game.render(Game.java:46) at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:499) at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1523) at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240) 

Всякий раз, когда я пытаюсь использовать метод, который является родным для Scala (например, стандартный метод println ()).

Я подозревал, что класс android не смог найти классы, используемые Scala, поэтому я попытался экспортировать проект Android с библиотекой Scala. Однако всякий раз, когда я пытаюсь это сделать, я получаю сообщение об ошибке, что у меня слишком много методов (похоже на это), что имеет смысл, поскольку Scala вводит в проект достаточно много методов, чтобы гарантировать эту ошибку.

Мой вопрос в том, как я могу сделать проект android доступным для классов и методов Scala, чтобы я мог использовать их так же эффективно в проекте Android, как и в настольном проекте?

Благодаря!

Хорошо, похоже, я смог решить мою проблему.

Я смог использовать ProGuard, чтобы сократить методы, используемые моими проектами, и теперь Scala работает на Android. На самом деле я столкнулся с самой проблемой с LibGDX, но сумел выяснить, как добавить его в конфигурацию. (С небольшой помощью от Google, конечно)

Для всех, у кого есть такая же проблема, вот мои Proguard cfg и ссылки, которые я использовал, чтобы помочь придумать решение. Счастливое кодирование!

https://github.com/yareally/android-scala-intellij-no-sbt-plugin

 -dontwarn scala.** -dontwarn java.awt.** -dontnote java.awt.** -dontwarn com.badlogic.gdx.jnigen.** -dontwarn com.badlogic.gdx.backends.android.AndroidDaydream -dontwarn com.badlogic.gdx.backends.android.AndroidInputThreePlus -dontwarn com.badlogic.gdx.backends.android.AndroidGraphicsDaydream -keepclasseswithmembers public class * { public static void main(java.lang.String[]); } -keep class * implements org.xml.sax.EntityResolver -keepclassmembers class * { ** MODULE$; } -keepclassmembernames class scala.concurrent.forkjoin.ForkJoinPool { long eventCount; int workerCounts; int runControl; scala.concurrent.forkjoin.ForkJoinPool$WaitQueueNode syncStack; scala.concurrent.forkjoin.ForkJoinPool$WaitQueueNode spareStack; } -keepclassmembernames class scala.concurrent.forkjoin.ForkJoinWorkerThread { int base; int sp; int runState; } -keepclassmembernames class scala.concurrent.forkjoin.ForkJoinTask { int status; } -keepclassmembernames class scala.concurrent.forkjoin.LinkedTransferQueue { scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference head; scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference tail; scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference cleanMe; } -keep class com.badlogic.gdx.backends.android.AndroidInput { public protected private *; } -keep class com.badlogic.gdx.backends.android.AndroidInputFactory { public protected private *; } -keep class com.badlogic.gdx.backends.android.AndroidInputThreePlus { public protected private *; } -keep class com.badlogic.gdx.backends.android.AndroidApplicationConfiguration { public protected private *; } -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; }