TLDR: Wie übergeben Sie Proguard-Mapping zu javac, um gegen verschleierte Bibliothek zu kompilieren?Run Proguard auf Multi-Modul-Projekt als "One Piece"
Die lange, aber ich sehe nicht, wie es kürzer zu machen:
Hintergrund: Ich habe folgenden Produkt-Setup:
Android Studio-Projekt - Bibliothek Modul - (sub) Modulkern - (Unter-) Moduls A - (sub) Modul B - (sub) Modul C - Proben APP-Modul - ... Andere Module
Jedes der Bibliothek Submodule A, B, C Referenzklassen in Core, aber A, B, C unabhängig voneinander. Im Prinzip vergleichbar mit Play Services, bei denen der Benutzer nur Code und das erforderliche Submodul haben kann. Jedes der Bibliothek Submodule hat externe APIs, aber auch viele interne Klassen Ziel ist es, Core, A, B, C als unabhängige aar-s zu verteilen.
Ziel: obfuscate alle Submodule zusammen nur öffentliche APIs ausgesetzt, sondern Paket und verteilen sie separat in verschleierter/optimierte Form zu verlassen.
Ausgabe: Ich sehe nicht, wie man es mit einfacher Gradle-Konfiguration verwendet. Ein benutzerdefiniertes Build-System wird hier benötigt, es sei denn, es gibt eine bekannte Lösung?
Was benötigt wird, ist hier:
- Java-Kompilieren alle Submodule zusammen
- Proguard-verschleiern sie zusammen
- Run den ganzen Rest des Build-Prozesses separat
Wo ist normaler Build-Prozess für jedes Modul ist: - Kompilieren -> alles inkl. Verschleierung -> Paket
Die direkte Einrichtung schlägt bei der Kompilierung des ersten Submoduls nach Core fehl. Wenn es nur möglich wäre, Proguard mapping.txt als Eingabe an den Java-Compiler zu übergeben ... Aber ich konnte eine solche Option nicht finden. Irgendwelche Ideen?
Danke !!!
würde für Kind-Module nicht Verschleierung gelten somit für jedes Modul bei der Kompilierung verschleierten alle Klassen zu machen? – Inverce
Wenn Sie möchten, dass Ihre Module verschleiert werden, müssen Sie jedem Modul eine Proguard-Direktive hinzufügen, um alle öffentlichen Klassen zu behalten: -servic public class * {public protected *; } – Venator85