Я строю рамки андроида, и мне нужно запутывать и сжимать банку, чтобы отправить ее пользователям.Как обфускать все, кроме общедоступных имен методов и атрибутов с помощью proguard?
Я использую инструмент Proguard включенный в Android SDK и у меня есть следующие требования к выходной баночке:
- держать все классы включены во входной баночке, но запутать их.
- не запутывают имена классов классов, вызываемые в AndroidManifest.xml
- не обфускают имя класса и общедоступные имена/атрибуты метода для используемого класса, однако для пользователя есть интерфейс сделайте это для их содержимого.
Для этого я использую следующую конфигурацию:
-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
}
Однако мои имена частных классов и атрибутов по-прежнему имею такое же имя, даже если содержание обфусцированные. Я что-то пропустил в своих подстановочных знаках?
Вы действительно должны использовать '-keepnames' вариант? Я думаю, что это тот, который делает вашу обфускацию неправильной. –