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"
.
- No se puede encontrar el método en la actividad
- Biblioteca "libmaliinstr.so" no encontrado
- Error al cargar CharSequence en Scala 2.11.4 y sbt 0.12.4
- ¿Es Scala para mí? (Desarrollador C # con enfoque en el estilo funcional / OOP)
- Acelerar el proceso dex con archivos jar, ¿es posible?
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.
- ¿Cómo puedo usar Android con Java y un núcleo hecho con Scala?
- Scala Inner Class - No es miembro
- Aplicación IntelliJ IDEA android scala
- Programas ejecutando aapt en android sdk de shell y de sbt
- Uso conveniente de Android XmlResourceParser?
- Android / Scala proyecto en IntelliJ 14 compila, pero se bloquea cuando se inicia no encontrar la clase Scala
- ¿Qué lenguajes de programación puedo usar en Android Dalvik?
- ¿Cómo extender ImageView en una aplicación Android Scala?
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é.
- Razón por la cual el atributo style no utiliza el prefijo android: namespace
- Cómo pasar un mapa de bits de Java a C ++ con JNI en Android Development