2016-04-26 8 views
0



Ich habe mein Android-Studio-Projekt mit vier Bibliotheksmodulen und einem Anwendungsmodul darin.
Ich habe sechs JAR-Dateien, die ich in einem Verzeichnis aufbewahrt habe. Jedes dieser Module verwendet einige der JAR-Dateien. Also habe ich Abhängigkeiten dieser jars in build.gradle Datei des jeweiligen Moduls mit relativen Pfad mit "Kompilieren von Dateien ('./../../ deliverables/xyz.jar')" hinzugefügt. Anwendungsmodul ist von all diesen Bibliotheksmodulen abhängig. Wenn ich Release-Build meines Anwendungsmoduls erstellen, schlägt es mit dem Fehler "duplicate zip entry" von proguard fehl, da ich proguard im Skript zum Erstellen von Großbuchstaben aktiviert habe. Dieser Fehler betrifft sechs JAR-Dateien.Wie zu beheben Android Projekt Release Build Proguard Fehler "Duplicate zip entry"?

Der Debug-Build dieses Projekts funktioniert einwandfrei.

Ich habe versucht, unter Lösungen:
1. injar Option in proguard-rules.pro Datei
2. dontwarn Option in proguard-rules.pro Datei
3. Keep Option in proguard-rules.pro Datei


Bitte helfen Sie mir.


Danke.

+0

ich glaube, Sie erleben das Problem hier beschrieben: http://stackoverflow.com/questions/20673625/android-gradle-plugin-0 -7-0-duplicate-files-when-packaging-o f-apk – AgileNinja

+0

Ich habe versucht, die oben genannten Link zur Verfügung gestellt, funktionieren aber nicht für mich. Mein Problem ist genau wie https://groups.google.com/forum/#!topic/adt-dev/HwSrdvPW7Fc – Swati

Antwort

0

Eine Lösung besteht darin, ein libraries-Modul zu erstellen, dessen einziger Zweck es ist, die .jar-Dateien zu enthalten. Sobald alle JAR-Dateien, die Sie benötigen, in diesem Modul vorhanden sind, können Sie sie aus den anderen Modulen entfernen und auf Ihr Bibliotheksmodul in Ihren anderen Modulen verweisen.

Zum Beispiel lassen Sie uns sagen, dass wir die App-Modul haben hängen von diesen vier Modulen:

app 
|---module1 
|---module2 
|---module3 
|---module4 

Wir haben ein libraries Modul erstellen können, die Sie in den Modulen verweisen, die in enthalten ist, mindestens eine der Bibliotheken verwenden das Modul, indem Sie das folgende um das Modul des build.gradle Zugabe:

compile project(':libraries') 
+0

Danke für die Lösung, es funktioniert. Aber meine App hat Flavors, in denen jeder Flavor unterschiedliche Sets von Modulen enthält, also will ich keine Bibliotheksquelle in apk, wenn das entsprechende Modul nicht enthalten ist, deshalb wurde die Abhängigkeit der lib nur in dem jeweiligen Modul hinzugefügt. Also ich möchte wissen, wie Progard Gläser oder Android Appcompact-Bibliotheken im Build-Prozess enthält. – Swati

+0

Antworten bitte? – Swati

+0

@Swati sorry, verpasste Ihren Kommentar. Sie können zwei Bibliotheksmodule ("Bibliotheken" und "Bibliotheken-bezahlt") haben, wobei die kostenpflichtige Version nur in dem Modul referenziert wird, das sich in der bezahlten Geschmacksrichtung befindet (oder welche Geschmacksrichtung Sie haben). – AgileNinja