2013-03-01 15 views
27

Ich versuche Proguard für mein Android-Projekt einzurichten. Mein Anwendungsprojekt enthält sehr wenig Code, verweist jedoch auf ein Bibliotheksprojekt, in dem der Großteil des Codes und alle anderen externen Jars enthalten sind. Davon abgesehen bin ich mir nicht sicher, wie ich proguard einrichten soll, um dies zu berücksichtigen. Im Moment ist meine Proguard-Konfigurationsdatei nur das Android-Beispiel von the ProGuard site. Ich habe herumgesucht, aber habe nicht viel oder irgendeine Dokumentation über Progard mit Bibliotheksprojekten gefunden, nur Gläser. Ich bin neu in Progress, also wäre jeder Schritt in die richtige Richtung großartig. Vielen Dank.Einrichten von ProGuard mit Android-Bibliotheksprojekten

Antwort

15

bearbeiten

Wie @BornToCode weist darauf hin, eine andere Antwort (ursprünglich here geschrieben) besser erklärt, wie Bibliotheksprojekte von Proguard behandelt werden. Außerdem hat diese referenzierte Frage mehr Interesse und mehr Gesamtreputation als in meiner ursprünglichen Antwort. Das Zitat:

Bibliotheksprojekte von selbst laufen nicht ProGuard, so dass sie nicht jede Konfiguration verwenden.

Anwendungsprojekte verschleiern die gesamte Codebasis, einschließlich aller referenzierten Bibliotheken, so dass sie die richtige Konfiguration für den Anwendungscode und für den Bibliothekscode benötigen.


Alte Antwort(nicht falsch, nur wahrscheinlich nicht der beste Ansatz)

Die Bibliotheksprojekte sind eher ein bequemer Weg, um ein Projekt zu seinem Glas in Eclipse zu verknüpfen. Wenn Sie das Projekt erstellen, ist die JAR-Datei die einzige Komponente des Bibliotheksprojekts, die für Ihren Compiler sichtbar ist.

Wenn Sie wollen, dass Glas verschleiern, diesen Beitrag ansehen:

How to obfuscate an Android library (.jar file) using Proguard in Eclipse

+0

Hallo, es scheint, diese Antwort ist anders mit [diese] (http://stackoverflow.com/questions/10982344/is-proguard-cfg-needed-for-library-projects#10992604). Könntest du erklären? – BornToCode

+0

@BornToCode Sie haben absolut Recht. Die verknüpfte Antwort ist offensichtlich viel seriöser als meine Antwort. Ich habe einen Link dazu und ein Zitat in meiner Antwort hier hinzugefügt. – Phil

4

Es macht Sinn für mich zu proguard Einstellungen für eine Bibliothek (wie das Bibliotheksdatei sollte nicht verschleiert) angeben in der Bibliothek Projekt. Ich habe festgestellt, dass ich auch Proguard-Konfigurationen aus meinen Bibliotheksmodulen in meiner Anwendung hinzufügen muss. Dazu habe ich folgendes zum defaultConfig Abschnitt in meiner Bibliothek build.gradle

apply plugin: 'com.android.library' 

android { 
    defaultConfig { 
     consumerProguardFiles 'proguard-rules.pro' 
    } 
} 

und konfiguriert dann die proguard-rules.pro Datei in meinem Bibliotheksmodul die Namen wichtiger serialisierten Klassen zu halten.

Siehe auch consumerProguardFiles gradle reference