2016-11-03 4 views
1

Ich benutze Proguard in meinem Android-Studio. Ich habe Proguard in meiner proguard-rules.pro Datei implementiert. Aber nach der Veröffentlichung einer Apk wird der Code nicht verschleiert.Code wird nicht mit Proguard verschleiert?

Hier ist die proguard-rules.pro Datei

# Add project specific ProGuard rules here. 
# By default, the flags in this file are appended to flags specified 
# in /home/chitra/Android/Sdk/tools/proguard/proguard-android.txt 
# You can edit the include path and order by changing the proguardFiles 
# directive in build.gradle. 
# 
# For more details, see 
# http://developer.android.com/guide/developing/tools/proguard.html 

# Add any project specific keep options here: 

# If your project uses WebView with JS, uncomment the following 
# and specify the fully qualified class name to the JavaScript interface 
# class: 
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { 
# public *; 
#} 

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontskipnonpubliclibraryclassmembers 
-dontpreverify 
-verbose 
-dump class_files.txt 
-printseeds seeds.txt 
-printusage unused.txt 
-printmapping mapping.txt 
-printmapping out.map 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

-allowaccessmodification 
-keepattributes *Annotation*,Signature,InnerClasses 
-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable 
-keepattributes InnerClasses 
-keepattributes Exceptions 
-dontoptimize 
-repackageclasses '' 
-dontwarn android.support.** 
-dontwarn org.apache.harmony.awt.** 
-dontwarn com.sun.mail.imap.protocol.** 
-dontwarn javax.activation.CommandInfo 
-dontwarn com.google.zxing.** 
-dontwarn com.actionsmicro.androidkit.ezcast.imp.googlecast.** 
-dontwarn org.apache.http.entity.mime.** 
-dontwarn com.thetransactioncompany.jsonrpc2.server.MessageContext 
-dontwarn com.actionsmicro.d.a.a 
-dontwarn okio.Okio.** 
-dontwarn okio.DeflaterSink.** 
-dontwarn java.nio.file.** 
-dontwarn retrofit2.** 
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 
-dontwarn android.support.design.** 

# The official support library. 
-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-keep class android.support.v7.app.** { *; } 
-keep interface android.support.v7.app.** { *; } 
-keep class android.support.v7.widget.** { *; } 
-keep interface android.support.v7.widget.** { *; } 

# The official design library. 
-keep class android.support.design.** { *; } 
-keep interface android.support.design.** { *; } 
-keep public class android.support.design.R$* { *; } 

# Keep fragments 
-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.app.Fragment 

-keep public class * extends android.app.Activity 
-keep public class * extends android.support.v7.app.ActionBarActivity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.app.backup.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public class com.android.vending.licensing.ILicensingService 

# EventBus 3.0 
-keep class de.greenrobot.event.** { *; } 
-keep interface de.greenrobot.event.** { *; } 

-keep class com.** { *; } 
-keep interface com.** { *; } 

# crashlytics android 
-keep class com.crashlytics.android.** { *; } 
-keep interface com.crashlytics.android.** { *; } 

# digits sdk android 
-keep class com.digits.sdk.** { *; } 
-keep interface com.digits.sdk.** { *; } 

# firebase, google services and gson 
-keep class com.google.** { *; } 
-keep interface com.google.** { *; } 

# square picasso 
-keep class com.square.picasso.google.** { *; } 
-keep interface com.square.picasso.** { *; } 

-keepnames class * implements java.io.Serializable 

-keepclassmembers class * implements java.io.Serializable { 
    static final long serialVersionUID; 
    private static final java.io.ObjectStreamField[] serialPersistentFields; 
    !static !transient <fields>; 
    !private <fields>; 
    !private <methods>; 
    private void writeObject(java.io.ObjectOutputStream); 
    private void readObject(java.io.ObjectInputStream); 
    java.lang.Object writeReplace(); 
    java.lang.Object readResolve(); 
} 

# Native Methods 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

# Android Support Library 

-keep class android.** {*;} 

# Button methods 

-keepclassmembers class * { 

public void *ButtonClicked(android.view.View); 

} 

# Reflection 

-keepclassmembers class com.elsinga.sample.proguard.SensorDescriptionFragment { 

public void updateFields(com.elsinga.sample.proguard.SensorData); 

} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

# Remove Logging 
-assumenosideeffects class android.util.Log { 
    public static *** e(...); 
    public static *** w(...); 
    public static *** wtf(...); 
    public static *** d(...); 
    public static *** v(...); 
} 

Was ist das Problem für das sein könnte? Lass es mich wissen, bitte.

Antwort

0

Der Grund ist höchstwahrscheinlich, dass Sie Ihren eigenen Code in den Regeln ausgeschlossen haben.

So wird das Verschleiern auf Ihrem Code nicht ausgeführt.

Ich weiß nicht von Ihrem Namespace, von Ihrer Frage, aber die folgenden Zeilen würden alles mit com. am Anfang auswirken.

Wenn Ihr Namespace ist, wird es von der Verschleierung ausgeschlossen.

Sie sollten in Betracht ziehen, die folgenden Zeilen zu entfernen oder die Namespaces, die versteckt werden sollen, vollständig zu quantifizieren, um nicht mit Ihren eigenen zu kollidieren.

-keep class com.** { *; } 
-keep interface com.** { *; } 

Update:

Sie sind auch alle Klassen zu halten, die mit Aktivität erweitern, Fragmente usw. die am wahrscheinlichsten ist, haben jede einzelne Seite von Code, den Sie geschrieben.

# Keep fragments 
-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.app.Fragment 

-keep public class * extends android.app.Activity 
-keep public class * extends android.support.v7.app.ActionBarActivity 
-keep public class * extends android.app.Application 

Es gibt wohl keinen guten Grund dafür. Versuchen Sie, das oben genannte zu entfernen.

+0

Ich habe den Code entfernt, den Sie erwähnt haben. Aber es funktioniert immer noch nicht. – Seenu69

+0

@ Seenu69 Hast du die Proguard-Datei geschrieben? oder es von irgendwo kopieren? Hast du es in der Gradle-Build-Datei aktiviert? Verwenden Sie all diese Bibliotheken, die ignoriert werden, oder handelt es sich um redundanten Code? – Doomsknight

+0

@Doomskinght Ich benutze alle Bibliotheken, die ich im Progard erwähnt habe. Auch habe ich den Proguard in build.gradle Datei auch aktiviert. – Seenu69

Verwandte Themen