Solución:
- Ofuscación básica
Para ofuscar el código en Android Studio, simplemente vaya a su archivo build.gradle en su proyecto de Android Studio:
Cambiar la propiedad minifyEnabled de falso a verdadero
Esta es una ofuscación básica.
Después de generar el apk, puede ver el resultado de la ofuscación al descompilar el apk con cualquier software. Esta página podría ayudarlo a:
http://www.decompileandroid.com/
En el resultado de la ofuscación, verá clases con el nombre: a, b, c ….
Y las variables y métodos de ofuscación también tendrán nombres como aa, c, ac …
- Ofuscación normal:
Para ofuscar el código en una forma más compleja, puede ir a la aplicación del directorio raíz y crear un archivo .pro. Por ejemplo, en la siguiente imagen he creado el archivo: proguard-rules-new.pro. En el mismo directorio debería ver un archivo llamado proguard-rules.pro
Ahora agregue el archivo que ha creado al archivo build.gradle
Y edite el archivo .pro que ha creado con sus propias reglas proguard personalizadas
Primero habilita minifyEnabled
en su archivo build.gradle, como
minifyEnabled true
Después de esto, agregue las siguientes líneas en el archivo progurad-rules.txt
-keep class yourpackage.** { *; }
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
Para comprobar que funciona bien, vaya a:
http://www.javadecompilers.com/apktool sitio web para que pueda verificar después de la descompilación.
Funcionará y tus clases se ocultarán por completo.
Actualizar: R8 está habilitado de forma predeterminada en la versión 3.4.0 de Android Studio y superior
En Android Studio 3.4+, R8 está habilitado de forma predeterminada, por lo que no es necesario agregar propiedades adicionales, aunque puede optar por optimizaciones profundas agregando fullMode
propiedad en gradle.properties
como:
android.enableR8.fullMode=true
Puede deshabilitar R8 y habilitar proguard
agregando las siguientes propiedades en gradle.properties
como:
android.enableR8 = false
useProguard = true
Android septiembre de 2018 lanza una nueva herramienta R8 herramienta de encogimiento y ofuscación.
R8 – R8 es una herramienta de reducción y minimización de código de Java que convierte el código de bytes de Java en un código dex optimizado
Para la versión AS inferior a 3.4.0.
- Abierto
gradle.properties
- Agregar
android.enableR8 = true
como
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
android.enableR8 = true
Requerimientos mínimos:
- Android studio 3.2 versión de septiembre de 2018 o superior
- Java 8
Herramienta R8
R8 es compatible con Proguard:
Tenga en cuenta que R8 está diseñado para funcionar con sus reglas ProGuard existentes, por lo que es probable que no necesite realizar ninguna acción para beneficiarse de R8. Sin embargo, debido a que es una tecnología diferente a ProGuard que está diseñada específicamente para proyectos de Android, la reducción y la optimización pueden resultar en la eliminación de un código que ProGuard puede no tener. Por lo tanto, en esta situación poco probable, es posible que deba agregar reglas adicionales para mantener ese código en la salida de su compilación.
Para deshabilitar R8 en AS 3.4.0 y superior:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
Nota: Para un tipo de compilación determinado, if you set useProguard to false
en el archivo build.gradle del módulo de tu aplicación, el Android Gradle plugin uses R8
para reducir el código de su aplicación para ese tipo de compilación, independientemente de whether you disable R8 in your project's gradle.properties file.