Problemas con la ejecución del archivo APK de Android al fusionar archivos dex con Scala

He estado intentando crear aplicaciones de Android usando Scala 2.9.1 y SBT 0.13 y Android-Plugin.
Sin embargo, ejecutar ProGuard puede ser extremadamente lento.
Por lo tanto, en lugar de eso, cuando no estoy usando ninguna clase / método nuevo desde la compilación anterior, sólo intento combinar classes.dex con mis propias clases de dexed android-app (como MainActivity.scala y tal).

El problema que tengo (en Android 4.0.x) es que la fusión va sin errores, pero cuando intento ejecutar la aplicación, obtengo esto "Unfortunately, MyAndroidApp has stopped" .

Aquí está el registro logcat:

  EmbeddedLogger E App crashed! Package: com.my.app v0 (0.1) 300 EmbeddedLogger E Application Label: MyAndroidApp 24137 AndroidRuntime E FATAL EXCEPTION: main 24137 AndroidRuntime E java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.my.app/com.my.app.MainActivity}: java.lang.ClassNotFoundException: com.my.app.MainActivity 24137 AndroidRuntime E at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2118) 24137 AndroidRuntime E at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2237) 24137 AndroidRuntime E at android.app.ActivityThread.access$600(ActivityThread.java:139) 24137 AndroidRuntime E at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262) 24137 AndroidRuntime E at android.os.Handler.dispatchMessage(Handler.java:99) 24137 AndroidRuntime E at android.os.Looper.loop(Looper.java:156) 24137 AndroidRuntime E at android.app.ActivityThread.main(ActivityThread.java:5005) 24137 AndroidRuntime E at java.lang.reflect.Method.invokeNative(Native Method) 24137 AndroidRuntime E at java.lang.reflect.Method.invoke(Method.java:511) 24137 AndroidRuntime E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 24137 AndroidRuntime E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 24137 AndroidRuntime E at dalvik.system.NativeStart.main(Native Method) 24137 AndroidRuntime E Caused by: java.lang.ClassNotFoundException: com.my.app.MainActivity 24137 AndroidRuntime E at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 24137 AndroidRuntime E at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 24137 AndroidRuntime E at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 24137 AndroidRuntime E at android.app.Instrumentation.newActivity(Instrumentation.java:1039) 24137 AndroidRuntime E at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2109) 24137 AndroidRuntime E ... 11 more 300 ActivityManager W Force finishing activity com.my.app/.MainActivity 5864 OpenGLRenderer D Flushing caches (mode 1) 300 ViewRootImpl D @@@- disable SystemServer HW acceleration 

He abierto manualmente el apk generado, y classes.dex dentro de él, navegó a través de los paquetes y encontró MainActivity allí.

Cualquier ayuda será apreciada.

OK, me di cuenta de lo que estaba mal.

Por definición, cada clase Scala implementa scala.ScalaObject .
Mi dexed com.my.app.MainActivity también implementó scala.ScalaObject .

Sin embargo, ya que no tenía scala.ScalaObject como parte de mi archivo anterior classes.dex , y no lo incluí en el nuevo, DVM no puede encontrar una clase con la firma de public class com.my.app.MyAndroidApp extends android.app.Activity implements com.my.app.TypedActivity with scala.ScalaObject .

Mi mejor conjetura es que dalvik está rechazando la clase por alguna razón. Desea buscar en logcat en el momento de instalar la aplicación, y buscar cualquier mensaje de dalvik. Se imprimirá un resumen breve sobre qué clase está rechazando y por qué.

  • Groovy, Scala, Clojure, etc scripts en Android
  • Llamar a diferentes constructores de Java de Scala con Android
  • Desarrollo sustancial de Android en Scala
  • Uso de una biblioteca Scala para una aplicación de Android
  • Cómo Jack (Java Android Compiler Kit) afectará a los desarrolladores de Scala
  • ¿Qué idiomas están maduros para desarrollar aplicaciones nativas en Android
  • Cómo excluir archivos R * .class de una compilación proguard
  • ¿Qué hay en scala-android.jar?
  • ¿Cómo mantener archivos como * .scala y * .txt de ser incluido en mis archivos apk?
  • Con ProGuard, ¿cuál es el impacto en la estrategia de pruebas?
  • Cómo administrar la autenticación / autorización para las solicitudes de usuarios enviadas desde aplicaciones móviles nativas que llaman a Play2! -Scala REST services
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.