Ich benutze Proguard, um meinen Code zu verkleinern. Meine Strategie besteht darin, es zu aktivieren und dann den Warnungen zu folgen, um alles zu behalten, worüber es sich beschwert. Wenn es externe Bibliotheken gibt, versuche ich den Proguard-Anweisungen zu folgen, die die Autoren zur Verfügung stellen. Viele Anweisungen enthalten eine -dontwarn
Flagge. Wenn ich das Flag -dontwarn
deaktiviere, erhalte ich Warnungen. Wenn wir die meisten Klassen über -keep
Flagge halten, warum Warnungen noch auftauchen? Beispiel:Proguard Warnungen trotz gehaltener Klassen
-keep class javax.** { *; }
# for butterknife
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.AbstractProcessor
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.ProcessingEnvironment
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.Filer
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.tools.JavaFileObject
...
Ich sehe. Dann sollte ich "-injars" und "-libraryjars" verwenden, wenn ich externe Bibliotheken kompiliere? – Vas
Wenn Sie Gradle Build für Ihre Android-Projekte verwenden, richtet es alle "-Jars" und "-Libraryjars" für Sie basierend auf den Projektabhängigkeiten ein. Keine Notwendigkeit für eine zusätzliche Einrichtung. – Tomik
Ah macht Sinn. Vielen Dank! – Vas