2010-11-12 19 views

risposta

4

Utilizzare dx.

+0

Qual è la riga di comando per questo? – Dhanush

+0

hmmmm ... dx? È uno degli strumenti forniti con l'SDK. –

+0

Viene visualizzato l'errore seguente durante la conversione della classe per risolvere l'errore: nome classe (com/WebService) non corrisponde percorso (WebService.class) ... durante l'analisi di WebService.class ... durante l'elaborazione di WebService.class 1 avviso – Dhanush

2

L'area dalvik docs include trivial example.

Modifica: Il collegamento è guasto. È possibile trovare la copia dell'albero di origine here e una versione formattata in un mirror here.

+0

Ma in generale, è improbabile che il tuo file di classe e il tuo file sorgente (s) sarebbe nella stessa directory. La chiave è usare "--no-strict" come indicato sotto nella risposta di @ darutk. –

+0

Utilizzando un layout di build Java standard, i nomi dei pacchetti nei file di origine dovrebbero corrispondere alla struttura della directory e i file .class finiranno accanto ai file .java. Non sono necessarie opzioni aggiuntive.A seconda del sistema di build, questo potrebbe essere totalmente automatico o molto scomodo, quindi "dx" offre una certa flessibilità nel modo in cui può essere utilizzato. – fadden

19

Invoca il comando "dx" con l'opzione "--dex" come segue.

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

Il comando "dx" è contenuto in Android SDK. La posizione del comando varia. Prova a cercare:

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

"dx --dex" può accettare alcune opzioni. Ad esempio, l'opzione "--no-strict" salterà il controllo se i nomi dei percorsi dei file di classe di input corrispondono ai nomi di pacchetti/classi dichiarati, quindi otterrete un risultato diverso per WebService.class se invocate dx con questa opzione. Probabilmente, l'opzione "--keep-classes" è utile se si desidera utilizzare i file jar sia su Android che su Java SE. Senza l'opzione "--keep-classes", il comando dx sostituisce tutti i file .class in un file jar di input con un file denominato "classes.dex", ma con l'opzione "--keep-classes", anche i file .class di input entrano in il file ouput e classes.dex.

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

ho letto il codice sorgente di dx e elencate le opzioni della riga di comando con qualche spiegazione alla pagina seguente.

L'utilizzo di dx --dex:

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

+2

Per i record: è ora in /build-tools/ / – ottel142

0

aggiunta più informazioni per darutk risposta: comando
dx è contenuto in Android SDK
esempio: D: \ Android \ AndroidSDK \ build-tools \ 23.0.1 \
con 23.0.1 è Android versione

0

Per ANT costruzione automatica:

<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> 

Questa è la mia esperienza. Potrebbe essere utile.

Problemi correlati