Pregunta

Lo que el registro de las soluciones existen para j2me?

Me interesa conocer fácilmente excluyendo el registro de la "liberación" de la versión, que tiene un paquete más pequeño y la memoria de la huella.

¿Fue útil?

Solución

Si usted está utilizando el preprocesamiento y ofuscación con Proguard, entonces usted puede tener un simple registro de clase.

public class Log {
  public static void debug(final String message) {
    //#if !release.build
    System.out.println(message);
    //#endif
  }
}

O hacer el registro en donde cada vez que usted necesita.Ahora, si la liberación.construir la propiedad se establece en true, este código va a ser comentado, que se traducirá en un método vacío.Proguard va a quitar todos los usos de método vacío - En efecto compilación de la versión tendrá todos los mensajes de depuración eliminado.

Editar:

Pensando en todo nivel de la biblioteca (estoy trabajando en la asignación de J2ME biblioteca) que tengo, probablemente, encontrar una solución mejor.

public class Log {
  private static boolean showDebug;

  public static void debug(final String message) {
    if (showDebug) {
      System.out.println(message);
    }
  }

  public static void setShowDebug(final boolean show) {
    showDebug = show;
  }
}

De esta manera final desarrollador puede habilitar el registro de los niveles dentro de la biblioteca que él/ella está interesado en.Si nada va a ser habilitado, todos los código de registro será eliminado en el producto final de ofuscación.Dulce :)

/JaanusSiim

Otros consejos

MicroLog es la apuesta segura.Se trata de una pequeña biblioteca de registro para Java ME (J2ME) como Log4j.Tiene soporte para el registro de la consola, archivo, RecordStore, Lienzo, Forma, Bluetooth, un puerto serie (Bluetooth, INFRARROJOS, USB), Socket(incl SSL), UDP, Syslog, MMS, SMS, correo electrónico o a Amazon S3.

http://sourceforge.net/projects/microlog/

Puede usar la opción-assumenosideaffects en proguard para completley eliminar su registro de clase:

-assumenosideeffects public class logger.Logger {*;}

En lugar de tener que procesarlos.

El Series60 y UIQ teléfono que tiene un Sol de la máquina virtual modificado por Symbian sí tiene la redirección de la Salida Estándar.

No sólo se puede capturar Sistema.pero Arrojadiza.printStackTrace() también funciona.

A principios de los teléfonos, Usted tendrá que escribir una aplicación de C++ que los ganchos en la biblioteca estándar de proceso de servidor.Symbian producido el Redirector de aplicación que puede capturar la VM en la salida estándar a una consola o un archivo.

En los nuevos teléfonos, un "redirect://" GCF protocolo fue introducido que puede leer la máquina virtual de la salida estándar en Java byte[] o de Cadena de objeto (que usted quiere hacer en el MIDlet) y el Redirector de la aplicación se ha vuelto a escribir en Java.

En el más reciente J9 VM usados en Series60 3rd Edition Feature Pack 2 terminales (y posterior), puede que tenga que probar "redirect://test" en su lugar.

He usado MIDPLogger a algún nivel aceptable en una aplicación de producción, a pesar de que he encontrado tiene más uso después de la integración en la aplicación en lugar de otro Midlet en suite y así sucesivamente.También encontré MicroLog pero no lo han utilizado en gran detalle.

Escribí un optimizador de código de bytes, y debido al formato de los archivos de clase se puede apuntar a la codificación UTF de classname & función que permite a los registros de salida con Miclase.someFunc() (puede procesar la firma si desea obtener los tipos), lo que permite hacer algo como el estilo de C depurar utilizando LÍNEA & ARCHIVO las macros.

La compilación condicional de la clase logger no resuelve el problema de la eliminación total de registro de declaraciones porque muy a menudo registro de más de una cadena simple.Usted va a buscar los valores de la variable y, a continuación, montar en cadenas de caracteres, por ejemplo:WhateverLog.log( "Loaded" + someclass.size() + "foo fighters" ).

Ahora bien, si usted sólo dejar el cuerpo de WhateverLog.registro (como se muestra en la aceptación de la solución), usted todavía va a dejar un montón de código innecesario, como la concatenación de cadenas (y por lo tanto un StringBuffer la creación).Por eso es mejor que utilice un código de bytes de post procesamiento de la herramienta como proguard (ya mencionados).Proguard-el assumenosideeffects permitirá su optimizador para eliminar no sólo el registro de las declaraciones, pero también todo el código cuyos resultados pudieran ser utilizado solamente por el registro de la llamada.

LWUIT marco de la J2ME proporcionar el Registro de forma que puede tener un registro de la declaración en su interior.Usted puede agregar el registro en cada lugar que usted piensa que puede generar la excepción.

Ejemplo :Registro.getInstance().showLog();Mediante la adición de la línea anterior se puede capaz de rastrear el inicio de sesión en los dispositivos J2ME.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top