Buduję platformę dla Androida i muszę zaciemnić i skurczyć słoik, aby wysłać ją do użytkowników.Jak zaciemnić wszystko oprócz publicznych nazw metod i atrybutów za pomocą proguard?
Używam narzędzie PROGUARD zawarte w Android SDK i mam następujące wymagania dla słoika wyjściowa:
- zachować wszystkie zajęcia ujęte w słoiku wejściowego, ale zaciemniać im.
- nie zamazywać nazw klas wywołanych w "AndroidManifest.xml"
- nie zaciemniać nazwy klasy i publicznych nazw/atrybutów dla klasy, która jest używana, ma interfejs użytkownika, jednak rób to dla ich zawartości.
Aby to zrobić, używam następującej konfiguracji:
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-keep, allowobfuscation class com.company.*
-keepclassmembers, allowobfuscation class * {
*;
}
-keepnames class com.company.MyClass { *; }
-keepclassmembernames class com.company.MyClass {
public <methods>;
public <fields>;
#!private *; also tried this but it didn't work
}
jednak moja nazwy atrybutów klas prywatnych i nadal mają taką samą nazwę, mimo że zawartość jest zaciemniony. Czy tęskniłem za czymś w moich identyfikatorach?
Czy naprawdę trzeba użyć opcji '-keepnames'? Myślę, że to właśnie sprawia, że twoje zaciemnianie jest nieprawidłowe. –