ConsumerProguardFiles vs ProguardFiles
War ich versucht, eine Anwendung zu erstellen, die enthalten eine Bibliothek-Modul La
mit proguard und ich bemerkte, dass die Bibliothek wurde nicht verschleiert. Versuche zu verstehen, warum. In diesem moment in der Zeit war mein buildType:
release {
minifyEnabled false
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
Nach einiger Suche habe ich über das ConsumerProguardFiles Funktion, die besagt:
ProGuard Regel Dateien, die in der veröffentlichten AAR.
Diese proguard-Regel-Dateien werden dann von einer Anwendung Projekt
verbraucht der AAR (wenn ProGuard aktiviert ist).Dies ermöglicht AAR angeben, schrumpfen oder Verschleierung exclude-Regeln.
Dies ist nur gültig für die Bibliothek-Projekt. Diese ignoriert in der Anwendung
Projekt.
Mit diesem nun die buildType
meiner Bibliothek La
ist folgende:
release {
minifyEnabled false
useProguard true
consumerProguardFiles 'proguard-rules.pro'
}
Und jetzt meine Bibliothek La
wird es mit der proguard-Regeln und der code der Bibliothek ist verschleiert.
Also meine Fragen sind:
1) Was ist der Grund für dieses unterschiedliche Verhalten. Warum nicht ProguardFiles verschleiern Bibliothek proguarded Regeln, sondern stattdessen ignoriert es?
2) ich vermute, dass das, was die ConsumerProguardFiles tut, ist das Zusammenführen der Regeln der Bibliothek mit der wichtigsten Anwendung proguard Regeln. Ist diese Annahme richtig?
3) kurz gesagt: verwenden Sie proguardFiles für Anwendungen und ConsumerProguardFiles für Bibliotheken. Richtig?
Danke für Eure Zeit beim Lesen!
- was ist der Zweck der
useProguard true
? - Im Grunde
useProguard true
ist standardmäßig aktiviert. Ich habe gerade, um zu sehen, ob es irgendeinen Unterschied, indem er es ausdrücklich oder nicht. (Gibt es nicht). Aber Sie können finden Sie unter developer.android.com/studio/build/shrink-code.html für komplexere Antwort unter "Aktivieren der code schrumpft mit Instant-Run"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soweit ich das verstanden habe,
minifyEnabled false
bedeutet, dass ProGuard ist nicht laufen zu verkleinern/verschleiern Sie Ihre Bibliothek-Modul. Das ist, was Sie wollen, weil das Bibliothek-Modul können nicht wissen, welche Teile Sie gehen, um in Ihrer Anwendung verwendet werden Modul.Statt, die library-module müssen den relevanten proguard Regeln für die app-Modul (über
consumerProguardFiles
) und dann die app-Modul ausgeführt wird ProGuard sowohl mit den eigenen Regeln und der Bibliothek Regeln zusammen, um zu minimieren die endgültige Anwendung APK.