2010-11-12 12 views

Respuesta

4

Use dx.

+0

¿cuál es la línea de comandos para esto? – Dhanush

+0

hmmmm ... dx? Es una de las herramientas proporcionadas con el SDK. –

+0

Recibo el siguiente error al convertir la clase al procesamiento de problemas de dex: nombre de clase (com/WebService) no coincide con la ruta (WebService.class) ... al analizar WebService.class ... al procesar WebService.class 1 advertencia – Dhanush

2

El área de dalvik docs incluye un trivial example.

Editar: El enlace está muerto. Puede encontrar la copia del árbol de origen here, y una versión formateada en un espejo here.

+0

Pero, en general, es poco probable que su archivo (s) de clase y el archivo fuente (s) estaría en el mismo directorio. La clave es usar "--no-strict" como se indica a continuación en la respuesta de @darutk. –

+0

Usando un diseño de construcción Java estándar, los nombres de los paquetes en los archivos fuente deben coincidir con la estructura del directorio, y los archivos .class terminarán al lado de los archivos .java. No se necesitan opciones adicionales.Dependiendo de su sistema de compilación, esto podría ser totalmente automático o muy inconveniente, por lo que "dx" proporciona cierta flexibilidad en cómo se puede utilizar. – fadden

19

Invoque el comando "dx" con la opción "--dex" como la siguiente.

dx --dex --output=<output-file> <input-file> 

El comando "dx" se encuentra en Android SDK. La ubicación del comando varía. Intente buscar:

<SDK-HOME>/platform-tools/ 
<SDK-HOME>/platforms/<platform>/tools/ 

"dx --dex" puede aceptar algunas opciones. Por ejemplo, la opción "--no-strict" omite verificar si los nombres de ruta de los archivos de clase de entrada coinciden con los nombres de paquete/clase declarados, por lo que obtendrá un resultado diferente para WebService.class si invoca dx con esta opción. Probablemente, la opción "--keep-classes" sea útil si desea utilizar archivos jar tanto en Android como en Java SE. Sin la opción "--keep-classes", el comando dx reemplaza todos los archivos .class en un archivo jar de entrada con un archivo llamado "classes.dex", pero con la opción "--keep-classes", los archivos .class de entrada también entran en el archivo de salida así como classes.dex.

ex: 
    dx --dex --keep-classes --output=output.jar input.jar 

que leer el código fuente de dx y enumeran las opciones de línea de comandos con una explicación en la página siguiente.

Uso de dx --dex:

http://darutk-oboegaki.blogspot.com/2011/03/usage-of-dx-dex-dx-dex.html

+2

Para los registros: ahora está en /build-tools/ / – ottel142

0

añadir más información para darutk respuesta: comando
dx está contenida en Android SDK
ejemplo: D: \ Android \ AndroidSDK \ build-herramientas \ 23.0.1 \
con 23.0.1 es la versión androide

0

Para la construcción automática ANT:

<property name="dx" value="${android_sdk}/build_tools/18.1.0/dx" /> 
<target name="convert_jar_to_dex"> 
    <apply executable="${dx}" failonerror="true" parallel="true"> 
      <arg value="-JXms1024m" /> 
      <arg value="-JXss1024k" /> 
      <arg value="--dex" /> 
      <arg value="--verbose" /> 
      <arg value="--no-strict" /> 
      <arg value="--num-threads=4" /> 
      <arg value="--output=${basedir}/bin/output.dex" /> 
      <fileset file="${basedir}/input.jar"/> 
    </apply> 
</target> 

Esta es mi experiencia. Puede ser útil.