android - rastro - como recuperar mensajes que eliminan de whatsapp
Android Proguard no elimina todos los mensajes de registro (4)
Esto solo elimina todo el debug Log.d(TAG, "...");
y error Log.e(TAG, "...")
llama:
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** e(...);
}
Para eliminar todas las llamadas de registro, simplemente use esto:
-assumenosideeffects class android.util.Log { *; }
Quiero crear una aplicación de Android ofuscada. Yo uso ProGuard para eso. Me gustaría eliminar automáticamente todos los mensajes de Log. *. ¿Cómo puedo hacer eso? Encontré this post pero todavía los recibo. (Yo uso un descompilador para comprobar la ofuscación).
El proguard-project.txt es el siguiente:
-injars libs/In.jar
-outjars libs/Out.jar
#-libraryjars <java.home>/lib/rt.jar
-libraryjars C:/Users/thomas/android-sdks/platforms/android-7/android.jar
-dontpreverify
-repackageclasses ''''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep public class * {
public protected *;
}
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** e(...);
}
Cualquier ayuda sería apreciada.
Gracias.
La configuración por defecto de Android Proguard desactiva la optimización. Para habilitarlo, en el archivo project.properties de su proyecto use proguard-android-optimize.txt en lugar de proguard-android.txt
Para cualquier persona que no pueda envolver su cabeza alrededor de la guardia profesional, debes asegurarte de hacer dos cosas.
1: De @yorkw
-assumenosideeffects class android.util.Log { *; }
2: De @Gallal
En el archivo project.properties de su proyecto use:
proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
en lugar de
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
Esto se debe a que tiene dos opciones de programación "listas para usar" ya que están incluidas en el SDK.
android-adk > tools > proguard
Que contiene dos archivos:
proguard-android.txt
proguard-android-optimize.txt
Espero que ayude a alguien más en la línea.
Si tiene Android Studio, debe modificar el build.gradle
de su aplicación principal.
En su archivo de gradle, debe especificar el uso de proguard-android-optimize.txt
como archivo predeterminado.
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(''proguard-android-optimize.txt''), ''proguard-rules.pro''
// With the file below, it does not work!
//proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
En realidad, en el proguard-android.txt
predeterminado proguard-android.txt
, la optimización está deshabilitada con las dos marcas:
-dontoptimize
-dontpreverify
El proguard-android-optimize.txt
no agrega esas líneas, por lo que ahora puede funcionar con assumenosideeffects
.
Luego, como se dijo en otras respuestas para Eclipse o de otra manera, solo tiene que agregar a su archivo principal de progenard la línea:
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** e(...);
}