2012-06-03 6 views
5

me gustaría gustaría examinar un método privado de un Actividad Android ejecutando dentro void Main (args String []) public static de la actividad método que he creado.¿Cómo ejecutar el método principal de una clase de actividad de Android?

utilizo Eclipse ADT y mi enfoque ingenuo de ejecutar el Actividad como una aplicación Java como resultado:

A fatal error has been detected by the Java Runtime Environment:
Internal Error (classFileParser.cpp:3174), pid=2936, tid=2980
Error: ShouldNotReachHere()

Así que miré a la configuración Run y descubrió que Android 3.1 es la única entrada en la sección Bootstrap Entradas de Classpath. Logré configurar el Build Path del proyecto para que el JRE se encuentre en el Bootstrap Entradas también. Luego eliminé la entrada Android 3.1 y agregué android.jar a Entradas de usuario.

El resultado de ejecutar la configuración Run es una RuntimeException:

Exception in thread "main" java.lang.RuntimeException: Stub!
at android.content.Context.(Context.java:4)

Una alternativa de ejecutar algunas pruebas sería la de encender una prueba JUnit . Pero en el caso de un método privado, esto es engorroso.

¿Hay alguna forma de ejecutar con éxito el método principal de una clase de actividad de Android?

+1

No se puede disparar hasta un 'Activity' principal a través de una método. El problema al probar esto es que el sistema maneja toda la construcción de los cuatro bloques de construcción. A menos que [su netbook ejecute Android] (http://www.makeuseof.com/tag/install-android-netbook/), no puede hacer esto (pero esto solo le impide tener que usar un emulador). En relación con las pruebas JUnit, Android SDK viene con una herramienta llamada [MonkeyRunner] (http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html) que es posible que desee consultar. – gobernador

Respuesta

4

Hay otra opción para el problema en cuestión, si el private método - que debe ser examinado a través de la ejecución de un método principal - puede ser extraído a otra clase. Esto, por supuesto, significa que el método de repente se convirtió en al menos protected.

Pero si el método se define dentro de una clase que no deriva de android.app.Activity se puede definir un método principal. Solo tiene que ajustar Configuración de ejecución en Eclipse.

  1. Ejecuta la clase con Ejecuta como aplicación Java. Esto genera una nueva configuración de ejecución con nombre como la clase
  2. editar la configuración de ejecución de nueva creaded
  3. Eliminar la biblioteca Android de Bootstrap entradas en el pestaña de rutas de clases
  4. Añadir JRE 6 o así a la acumulación ruta del proyecto
  5. Añadir este JRE a los Bootstrap entradas en el pestaña de rutas de clases
  6. Añadir android.jar, que reside en las plataformas directorio del SDK de Android en usuario Entradas de en el pestaña de rutas de clases
0

El método principal no es el punto de entrada en Android como en Java. ¿Quieres anular la actividad

public void onCreate(Bundle savedBunldeInstance) method. 
+0

Esto no me permitiría ejecutar código dentro de onCreate sin encender el emulador o un dispositivo físico, ¿verdad? Pero ese es todo el punto. – rmoestl

+1

No. No puede ejecutar nada sin el emulador porque no tiene implementada la Máquina virtual de Android para su arquitectura, como tiene Java Virtual Machine. – snihalani

2

es muy importante desde el punto de vista de Android, el ciclo de vida de Actividad son colecciones de algunos métodos que son manejados por el sistema operativo a través de la vida fuera de las actividades.

public void onCreate(Bundle savedBunldeInstance) 

se invoca tan pronto como se inicia la aplicación que crea la actividad. Este es el punto de entrada de una aplicación en Android. Debe tener el emulador o el dispositivo físico para ejecutar la aplicación de Android. Aquí el archivo es compiled 2 times, una vez por java compiler then by dalvik compiler.

DVM (Dalvik Virtual Machine) se encuentra en el dispositivo Android (EMULADOR O FÍSICO), esta es la razón por la que necesitamos emulador o dispositivo físico para ejecutarlo ... y onCreate es el punto de entrada para ello.

A petición suya, estoy editando esta publicación con información adicional.Las líneas a continuación se abstraen de http://developer.android.com/

Android applications don't have a single entry point. 
(there's no main() function, for example). 

para más detalles haga clic en este:

http://developer.android.com/guide/topics/fundamentals.html 
+0

Gracias por esbozar lo que sucede detrás de escena. Upvoted. Esto significa que ejecutar un método principal en las clases de Actividad de Android no se puede lograr con una cantidad decente de esfuerzo, ¿verdad? ¿Le gustaría editar su respuesta en consecuencia, si eso es correcto? Entonces, aceptaría tu respuesta. – rmoestl

Cuestiones relacionadas