2013-07-22 16 views
5

Sto cercando di importare una libreria (Evernote Android-SDK) in Android Studio. Ho ottenuto gradle per trovarlo e scaricarlo (è apparso nella sezione Librerie esterne o in Project Explorer). Poi ha iniziato a dirmi che stava creando un file duplicato.Errore gradle - File duplicati copiati in APK AndroidManifest.xml

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 
apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.android.support:support-v4:13.0.+' 
    compile 'com.evernote:android-sdk:1.1.+' 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 16 
    } 
} 

Questo è l'insieme di errori visualizzati.

Gradle: : duplicate files during packaging of APK C:\Users\SSMI\My Projects\AutoNote\AndroidProject\AutoNote\build\apk\AutoNote-debug-unaligned.apk 
Gradle: Execution failed for task ':AutoNote:packageDebug'. 
    > Duplicate files copied in APK AndroidManifest.xml 
    File 1: C:\Users\SSMI\My Projects\AutoNote\AndroidProject\AutoNote\build\libs\AutoNote-debug.ap_ 
    File 2: C:\Users\SSMI\My Projects\AutoNote\AndroidProject\AutoNote\build\libs\AutoNote-debug.ap_ 

Qual è il problema qui e come posso risolvere il problema?

risposta
Quindi quello che ho fatto è stato mettere una cartella nella root progetto denominato librerie. Ho spostato la cartella della libreria sdk di evernote in quella e l'ho chiamata evernote.

Poi sono andato a file struttura del progetto. Ho ignorato l'avvertimento. Sono andato in moduli cliccato sul + e aggiunto la cartella evernote. Ho quindi selezionato il modulo del mio progetto dell'app e sono passato alla scheda delle dipendenze. Ho premuto + (potrebbe essere necessario Alt + Inserisci se non cliccherà) e aggiunto il modulo che ho importato (evernote).

Sono stato indotto a pensare che non funzionasse perché ho dimenticato di importarlo nei file di origine.

+0

Controllare la struttura del progetto (File -> Struttura del progetto). Come è inclusa la tua lib di evernote nel tuo progetto? Dovrebbe essere aggiunto una volta come modulo. – owe

risposta

7

Non penso che si possa fare riferimento all'SDK Android Evernote tramite Maven con Android Studio. Il problema deriva dal fatto che le librerie Android non possono essere confezionate come semplici jar.

La libreria Evernote è stata creata utilizzando il plugin maven-android che non è compatibile con il plug-in gradle di Android Studio. Questo perché il plugin Maven usa il formato apklib per ridistribuire le librerie, mentre gradle usa il nuovo formato aar. Ecco perché gradle sta avendo problemi nel fondere l'AndroidManifest di Evernote con il tuo, risultando in duplicati.

Invece, dovrai clonare l'origine dell'SDK di Evernote, importarlo manualmente in Android Studio e farvi riferimento in questo modo. Il loro readme includes instructions per farlo con Intellij, che dovrebbe essere lo stesso di Android Studio.

+0

Grazie per l'aiuto. L'ho fatto funzionare ora. È davvero un peccato che tu non possa usare gradle per prendere la versione più recente come stavo cercando di fare. Dovrebbe essere in grado di funzionare nel modo in cui l'ho avuto. – SSMI

+0

Pensavo di averlo funzionato. Quindi dice che è stato compilato, ma Android Studio mostra ancora errori nelle righe in cui faccio riferimento a parti di Evernote API. C'è un altro passo per fare in modo che il completamento del codice funzioni correttamente? – SSMI

+0

Non ci dovrebbe essere. Se hai modificato i tuoi file gradle, puoi provare a risincronizzarli con il tuo progetto Android Studio: http://stackoverflow.com/a/17098412/108 – Greg

0

Ho avuto lo stesso errore e sembra essere causato dall'avere un file con lo stesso nome in entrambi i file jar. per me, entrambi i file avevano un file chiamato "about.html" nella loro directory principale. Dopo aver rinominato il file, tutto ha funzionato.

-1

È stato aggiunto un contenitore di libreria all'interno di un file Manifest.xml È possibile rinominare il tipo jar in zip. Quindi estrarre zip e rimuovere il file Manifest.xml. Successivamente è possibile comprimere nuovamente la cartella per comprimere. Infine rinomina il tipo in jar.

Problemi correlati