2013-05-17 10 views
7
Erwartete Bauen

Umgebungskonfiguration

  • com.android.tools.build:gradle:0.4
  • gradle Version 1.6
  • JDK 1.6 (OSX)
  • android Build-Tools Version 17
  • Kompilierung sdk Version 17

Die i Was ich zu haben scheint, ist, dass ich Lombok nicht davon abhalten kann, in die Apk aufgenommen zu werden. Ich habe versucht, es zu tun durch eine bereitgestellte Konfiguration wie folgt zu erstellen:Gradle Konfigurationen Arbeiten nicht in dem neuen Android-System

configurations { 
    provided 
} 

sourceSets { 
    main { compileClasspath += configurations.provided } 
} 

und dann die Abhängigkeit wie folgt aus:

dependencies { 
    provided ‘org.projectlombok:lombok:0.11.8′ 
} 

Aber ich bin immer noch diesen Fehler:

Error: duplicate files during packaging of APK <myapp>.apk 
Path in archive: LICENSE 
Origin 1: /<home>/.gradle/caches/artifacts-24/filestore/org.projectlombok/lombok/0.11.8/jar/e43ce2be16d8990568a4182c0bf996ad3ff0ba42/lombok-0.11.8.jar 
Origin 2: /<home>/.gradle/caches/artifacts-24/filestore/org.sonatype.sisu.inject/cglib/2.2.1-v20090111/jar/7ce5e983fd0e6c78346f4c9cbfa39d83049dda2/cglib-2.2.1-v20090111.jar 
:packageRelease FAILED 

Ich habe versucht, lombok-api.jar zu verwenden, was bei der Ausführung von dex zu einem anderen Problem bezüglich einiger AccessLevel-Annotationen führt.

Was darauf hindeutet, dass es die Lombok Jar-Datei in die apk enthält. Das sollte nicht passieren, irgendwelche Vorschläge?

Antwort

5

Sie können sourceSets nicht verwenden, weil wir benutzerdefinierte verwenden. Sie würden folgendes zu tun haben:

android.applicationVariants.each { variant -> 
    variant.javaCompile.classpath += configurations.provided. 
} 

Allerdings sollte es möglich sein, anstatt die Abhängigkeit von unserem „Paket“ config entferne ich in sie aussehen werden (die die „Laufzeit“ ersetzt.).

+1

Danke für die Antwort, ich habe die Änderungen gemacht, die Sie vorgeschlagen haben, aber ich bekomme immer noch den gleichen Fehler, mein Gefühl ist, dass das Graply-Plugin den CompileClassPath als irgendeine Art von Pfad irgendwo verwenden muss, wenn es da ist ist ein Weg, Bibliotheken aus dem Import in die Apk auszuschließen, die großartig wäre, müssen wir dies auch für Mobeam später in diesem Jahr zu verwenden. –

+1

Entschuldigung für die Verwirrung, ich erkannte gerade, dass ich eine Abhängigkeit in Lombok auch zog, ich habe jetzt aus dieser Bibliothek Abhängigkeit ausgeschlossen und immer noch den Gradle-Code konfiguriert, wie Sie hier aufgeführt haben, aber jetzt scheint ich, dass die Bibliothek fehlt in der Compile-Pfad beim Ausführen compileRelease –

+0

FYI, Ausdrucken android.applicationVariants, gibt mir ein leeres Array (ex []), weiß nicht, ob das hilft. Ich habe nach weiteren Informationen über applicationVariants gesucht, es scheint zuerst buildVariants und jetzt seine applicationVariants zu sein. Scheint, es gab viele Änderungen zwischen 0.3 und 0.4 dieses Build-Tool, die Dokumentation auf der Website bezieht sich immer noch auf 0.3 –

Verwandte Themen