android - online - nativescript started




"Conversione in formato Dalvik non riuscita con errore 1" su JAR esterno (20)

Nella mia applicazione Android in Eclipse ottengo il seguente errore.

ECCEZIONE DI LIVELLO SUPERIORE INASPETTATO:
java.lang.IllegalArgumentException: già aggiunto: Lorg / xmlpull / v1 / XmlPullParser;
....
La conversione in formato Dalvik non è riuscita con errore 1

Questo errore appare solo quando aggiungo un file JAR esterno specifico al mio progetto. Ho cercato a lungo la possibile soluzione, ma nessuna delle possibili soluzioni funziona. Ho anche provato a passare ad Android 1.6 anziché a 1.5 (la versione corrente che uso).


Ecco un altro scenario e una soluzione:

Se riscontri questo problema di recente dopo aver aggiornato ADT per Eclipse:

  1. Nel tuo progetto dell'app, controlla eventuali cartelle di origine collegate che puntano ai tuoi progetti di libreria (hanno nomi nel formato "LibraryName_src").
  2. Seleziona tutti questi progetti, fai clic con il tasto destro del mouse, scegli " Crea percorso " -> " Rimuovi dal percorso di creazione ".
  3. Scegli " Scollega anche la cartella dal progetto " e fai clic su " ".
  4. Pulire, ricostruire e ridistribuire il progetto.

Sembra che la ragione sia che alcune versioni precedenti delle cartelle di origine del progetto Libreria collegata ADT ai progetti "figlio" e l'attuale combinazione ADT / Dex non siano più compatibili con tale soluzione.

EDIT: questo è confermato da una voce del blog Android Dev, in particolare questa - vedi l'ottavo paragrafo in poi.


Ho affrontato questo problema io stesso oggi. La pulizia e la ricostruzione non hanno risolto il problema. Anche eliminare e reimportare il progetto non è stato d'aiuto.

Finalmente ho rintracciato a una brutta aggiunta al mio file .class. Penso che questo sia stato aggiunto dagli strumenti del plugin quando stavo cercando di risolvere un altro problema, rimuovendolo si è sbarazzato del errore di conversione "Conversione in Dalvik fallito con errore 1":

<classpathentry kind="lib" path="C:/dev/repository/android-sdk-windows/platforms/android-3/android.jar">
    <attributes>
        <attribute name="javadoc_location" value="file:/C:/dev/repository/android-sdk-windows/docs/reference"/>
    </attributes>
    <accessrules>
        <accessrule kind="nonaccessible" pattern="com/android/internal/**"/>
    </accessrules>


Ho avuto lo stesso problema e nessuna di queste soluzioni ha funzionato. Infine, ho visto nella console che l'errore era dovuto alla classe duplicata (una nel progetto esistente, una nel file jar aggiunto):

java.lang.IllegalArgumentException: already added: package/MyClassclass;
[2011-01-19 14:54:05 - ...]: Dx1 error; aborting
[2011-01-19 14:54:05 - ...] Conversion to Dalvik format failed with error 1

Quindi controlla se stai aggiungendo jar con classi duplicate nel tuo progetto. Se sì, prova a rimuoverne uno.

Ha funzionato per me.


Ho risolto il problema.

Questo è un conflitto di file JAR.

Sembra che io abbia due file JAR sul mio buildpath che includono lo stesso pacchetto e le stesse classi.

smack.jar e android_maps_lib-1.0.2

L'eliminazione di questo pacchetto da uno dei file JAR ha risolto il problema.


Il mio problema è stato causato dalla versione 12.0 di ADT e dall'integrazione di ProGuard. Questo bug è ben documentato e la soluzione è nella documentazione

La soluzione è qui

here


In generale, sembra che questo problema si presenta quando ci sono file JAR non necessari nel percorso di generazione.

Ho affrontato questo problema mentre lavoravo su IntelliJ IDEA . Per me è successo perché ho aggiunto librerie JUnit e Mockito che venivano compilate in fase di runtime. Questo doveva essere impostato su "testing" nelle proprietà del modulo.


La mia unica e unica soluzione che ho trovato oggi dopo quattro ore di test di tutte le soluzioni, è una combinazione di molte soluzioni fornite qui:

  • Delete progetto da Eclipse
  • Elimina i file in \bin e \gen dalla cartella del progetto
  • Rimuovi i riferimenti alle librerie nel file .classpath nella cartella del progetto root
  • Riavvia Eclipse con la riga di comando: eclipse -clean
  • Import progetto
  • Fare clic con il tasto destro del mouse sul progetto - selezionare Properties > Java Build Path > Libraries e rimuovere tutto tranne Android XX.Y
  • Finalmente clean progetto, attendi la costruzione automatica o Build
  • Lancia e ora funziona! Almeno per me...

Ho provato ogni passo alla volta e molte combinazioni, ma solo la successione di tutti i passaggi in una volta lo ha fatto! Spero di non doverlo affrontare di nuovo ...


La semplice pulizia del progetto ha funzionato per me ogni volta che si verifica questo errore.


Mi sono imbattuto in questo problema perché il plug-in Android-Maven in Eclipse apparentemente non riconosceva riferimenti transitivi e riferimenti referenziati due volte da un paio di progetti (incluso un progetto di libreria Android) e li includeva più di una volta. Ho dovuto usare hocus-pocus per ottenere tutto incluso solo una volta, anche se Maven dovrebbe prendersi cura di tutto questo.

Ad esempio, avevo una core library globalmentor-core, che era anche usata da globalmentor-google e globalmentor-android (l'ultimo dei quali è una libreria Android). Nel globalmentor-android pom.xml ho dovuto contrassegnare la dipendenza come "fornita" nonché esclusa da altre librerie in cui è stata inclusa in modo transitorio:

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-core</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!-- android-maven-plugin can't seem to automatically keep this from being
             included twice; it must therefore be included manually (either explicitly
             or transitively) in dependent projects -->
        <scope>provided</scope>
    </dependency>

Poi nell'applicazione finale pom.xml ho dovuto usare l'inganno giusto per consentire solo un percorso di inclusione --- oltre a non includere esplicitamente la libreria principale:

    <!-- android-maven-plugin can't seem to automatically keep this from being
        included twice -->
    <!-- <dependency> -->
    <!-- <groupId>com.globalmentor</groupId> -->
    <!-- <artifactId>globalmentor-core</artifactId> -->
    <!-- <version>1.0-SNAPSHOT</version> -->
    <!-- </dependency> -->

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-google</artifactId>
        <version>1.0-SNAPSHOT</version>
        <exclusions>
            <!-- android-maven-plugin can't seem to automatically keep this from
                being included twice -->
            <exclusion>
                <groupId>com.globalmentor</groupId>
                <artifactId>globalmentor-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-android</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

Nel mio caso

progetto-> proprietà-> percorso di sviluppo java -> nella scheda ordine ed esportazione -> deseleziona android-support-v4.jar


Nessuna delle soluzioni elencate ha funzionato per me.

Ecco dove stavo avendo un problema:

Ho aggiunto il file JAR esterno jSoup al percorso del mio progetto mettendolo prima in una cartella di origine chiamata "libs", quindi facendo clic con il tasto destro su di esso, Build Path -> add to build path. Questo ha gettato l'errore di conversione Dalvik. Diceva che avevo "già incluso" una classe da quel file JAR. Ho controllato la directory del progetto e ho scoperto che il punto in cui era "già incluso" era in effetti la directory bin . Ho cancellato il file JAR dalla directory bin e ho aggiornato il progetto in Eclipse e l'errore è andato via!


Nessuna delle soluzioni proposte in precedenza ha funzionato per me. Nel mio caso, il problema si è verificato quando sono passato dal fare riferimento a una cartella del codice sorgente della libreria all'utilizzo del file JAR della libreria. Inizialmente c'era un progetto di libreria Android elencato sotto la sezione Proprietà libreria \ Android pagina \ Libreria di applicazioni Android e la libreria comparata anche nell'albero di Project Explorer come collegamento alla directory di origine della libreria.

In primo luogo, ho appena cancellato il collegamento alla directory dall'albero del progetto e ho aggiunto la libreria JAR al percorso di build, ma questo ha causato l'eccezione.

La procedura corretta era (dopo aver cambiato il percorso di costruzione e rimettere il riferimento all'origine della libreria):

  • rimuovere correttamente il collegamento della directory di origine della libreria rimuovendo effettivamente il riferimento dalla pagina Proprietà del progetto dell'applicazione \ Android

  • aggiungere la libreria JAR al percorso di generazione del progetto dell'applicazione come al solito.


Puoi risolvere facilmente questo problema (con Eclipse Strumenti per sviluppatori Android, Build: v22.0.1-685705) disattivando il menu> "Progetto"> "Crea automaticamente" durante l'esportazione (non firmata) dell'applicazione Android. Dopodiché, non dimenticare di riaccenderlo.


Questo può anche essere causato se hai aggiunto il file Android.jar al tuo percorso di build, magari con una correzione rapida accidentale in Eclipse. Rimuovilo con il tasto destro del mouse su Progetto -> percorso di creazione -> configura percorso di creazione -> android.jar , rimuovi.


Solo per le altre persone che hanno ancora questo problema e hanno provato le risposte di cui sopra ma ottenendo comunque l'errore (che era il mio caso), la mia soluzione è stata quella di eliminare il progetto da Eclipse e ri-importarlo di nuovo.

Ciò ha reso la libreria di Android da aggiungere nuovamente alle mie librerie di riferimento, quindi ora ho due file JAR Android referenziati, quindi ne ho cancellato uno e ora compila bene.

Soluzione: eliminare il progetto da Eclipse IDE e quindi reimportarlo di nuovo, quindi verificare le soluzioni di cui sopra.


Spesso per me, la pulizia del progetto NON risolve questo problema.

Ma chiudere il progetto in Eclipse e riaprirlo sembra risolverlo in quei casi ...


Tutte le soluzioni sopra non hanno funzionato per me. Non sto usando alcun .jar precompilato. Sto usando gli errori LVL e Dalvik in tutti i casi relativi alla libreria delle licenze di mercato.

Il problema è stato risolto eliminando il progetto principale e reimportando (creare un nuovo progetto da fonti esistenti).


Vai su Progetto »Proprietà» Percorso di costruzione Java »Librerie e rimuovi tutto eccetto" Android XY "(nel mio caso Android 1.5). fare clic su OK. Vai su Progetto »Pulisci» Pulisci progetti selezionati sotto »seleziona il tuo progetto e clicca OK. Questo dovrebbe funzionare

È anche possibile che tu abbia un file JAR che si trova da qualche parte nelle cartelle del tuo progetto (avevo copiato il file JAR di Admob nella mia cartella src) e poi l'ho aggiunto come una libreria di percorsi Java. Non viene visualizzato in Esplora pacchetti, quindi non lo si nota, ma viene contato due volte, causando il temuto errore di Dalvik 1.

Un altro possibile motivo potrebbe essere il conflitto del nome del pacchetto. Supponiamo di avere un pacchetto com.abc.xyz e una classe chiamata A.java all'interno di questo pacchetto, e un altro progetto di libreria (che viene aggiunto alla dipendenza di questo progetto) che contiene lo stesso com.abc.xyz.A.java , allora avrai lo stesso identico errore. Ciò significa che hai più riferimenti allo stesso file A.java e non riesci a costruirlo correttamente.

In altri modi questo può accadere se si modifica o aggiunge accidentalmente o intenzionalmente qualcosa nel file del percorso classe. In certi casi potremmo aggiungere manualmente il percorso android.jar al file classpath per generare java doc.Sulla rimozione di quello dopo la generazione di javadoc il codice funzionerà bene. Si prega di controllare anche questo se si verifica ancora qualcuno.


Basta pulire il progetto

Se questo non funziona, prova le altre soluzioni


EDIT (nuova soluzione):

Sembra che la soluzione precedente sia solo un bypass. Sono riuscito a risolvere definitivamente il problema: nel mio caso c'era un disallineamento nei file android-support-v4 nel mio progetto e nel progetto Facebook a cui si fa riferimento nel mio progetto.

Ho trovato questo errore eseguendo Lint Check (Strumenti Android / Esegui Lint: verifica errori comuni)

La mia precedente soluzione:

Ho provato qualsiasi soluzione possibile su questo sito - nulla ha aiutato !!!

Finalmente ho trovato una risposta qui: https://groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4

Semplici passaggi:

Vai a Progetto -> deseleziona Build automaticamente

Vai a Progetto -> Pulisci ..., pulisci sia il progetto della libreria che il tuo progetto dell'app

Esporta la tua app come APK firmato mentre Build Automatically è ancora disabilitato





android-sdk-1.6