2015-10-15 22 views
10

Pracuję nad SDK, moje środowisko ma bibliotekę SDK i projekt testowy, który z niej korzysta.Android, jak umieścić wszystkie moje klasy w jednym pakiecie przy użyciu Proguard

Chcę zabezpieczyć swój kod biblioteki przed użytkownikami bibliotek i tam, ponieważ muszę go zaciemnić, ale po prostu to.

Więc w Android Studio w mojej bibliotece modułu, w proguard-rules.pro pliku dodałem kolejny skrypt:

-dontpreverify 
-optimizations !code/simplification/arithmetic 

-keep class !com.example.**{ *; } 
-keep public class com.example.sdk.Example{*;} 
-keep public class com.example.sdk.IExampleCallback{*;} 
-keep public class com.example.sdk.ui.ExampleActivity 

-dontwarn android.util.Log 

-repackageclasses 'com.example.security' 
-allowaccessmodification 

Klasy uzyskać ukrywane, ale ich opakowanie nie uległo zmianie. Zgłaszałam propozycję Eric Lafortune (autora programu Proguard) dodawania allowaccessmodification, ale to nie pomogło. Próbuję również użyć flattenpackagehierarchy, ale nie przyniosło to efektu.

Pomóż mi, jak umieścić wszystkie moje zajęcia w jednym pakiecie?

Odpowiedz

7

rozwiązać go: Po dodaniu tych linii to nie praca

-useuniqueclassmembernames 
-keeppackagenames doNotKeepAThing 

To mój pełny skrypt

-optimizationpasses 30 
-mergeinterfacesaggressively 
-dontpreverify 
-optimizations !code/simplification/arithmetic 

-repackageclasses 'com.example' 
-allowaccessmodification 
-useuniqueclassmembernames 
-keeppackagenames doNotKeepAThing 

-keep class !com.example.**{ *; } 
-keep public class com.sdk.example{ 
    *; 
} 
-keep public class com.sdk.IExampleCallback{ 
    *; 
} 
-keepclasseswithmembernames public class com.sdk.ui.activity.ExampleActivity{ 
    public <methods>; 
    protected <methods>; 
} 
-keepclasseswithmembernames public class com.example.sdk.ExampleReciever{ 
    public <methods>; 
} 

-assumenosideeffects class android.util.Log { 
    public static boolean isLoggable(java.lang.String, int); 
    public static int v(...); 
    public static int i(...); 
    public static int w(...); 
    public static int d(...); 
    public static int e(...); 
}