ResChiper
Herramienta de Ofuscación de Recursos AAB
Tabla de Contenidos
- Introducción
- Primeros Pasos
- Requisitos
- Instalación
- Uso
- Opciones de Configuración
- Ejemplo
- Lista Blanca
- Salida
- Agradecimientos
- Licencia
Introducción
ResChiper es una herramienta diseñada para ofuscar recursos AAB de Android. Te permite proteger tus recursos contra accesos no autorizados y reducir el tamaño del AAB de tu aplicación.
Primeros Pasos
Sigue estos pasos para integrar la Herramienta de Ofuscación de Recursos AAB en tu proyecto Android:
Requisitos
Antes de comenzar a usar ResChiper, asegúrate de que tu aplicación cumple con los siguientes requisitos:
- Kit de Desarrollo de Java (JDK): ResChiper requiere JDK 17, asegúrate de que tu aplicación esté configurada con JDK 17.
- Plugin de Gradle para Android (AGP): versión 8.0 o posterior.
Instalación
#### 1. Agregar el Plugin de Gradle de ResChiper
En el archivo build.gradle a nivel raíz de tu proyecto, agrega el plugin de Gradle de ResChiper en la sección buildscript:
buildscript {
dependencies {
classpath "io.github.goldfish07.reschiper:plugin:"
}
repositories {
mavenCentral()
google()
}
} #### 2. Aplicar el Plugin
En el archivo build.gradle a nivel de la aplicación, aplica el plugin ResChiper:
apply plugin: "io.github.goldfish07.reschiper"
#### 3. Configurar el PluginEn tu archivo app/build.gradle, configura el plugin ResChiper especificando los ajustes deseados. Aquí tienes un ejemplo
de configuración:
resChiper {
enableObfuscation = true //by default res obfuscate is enabled
obfuscationMode = "default" //["dir", "file", "default"]
obfuscatedBundleName = "reschiper-app.aab" // Obfuscated file name, must end with '.aab'
//mappingFile = file("path/to/your/mapping.txt").toPath() // Mapping file used for incremental obfuscation
whiteList = [
//Whitelist rule (directory name to exclude)
"res/raw", // raw dir will not be obfuscated
"res/xml", // xml dir will not be obfuscated //Whitelist rule (file name to exclude)
"res/raw/*", // all files inside raw directory will not be obfuscated
"res/raw/success_tick.json", // success_tick.json file will not be obfuscated
"res/xml/*", // all files inside xml directory will not be obfuscated
// White list rules (resource name to exclude)
".R.raw.",
".R.xml.",
// for google-services
"*.R.string.google_api_key",
"*.R.string.google_app_id",
"*.R.string.default_web_client_id",
"*.R.string.gcm_defaultSenderId",
"*.R.string.ga_trackingId",
"*.R.string.firebase_database_url",
"*.R.string.google_crash_reporting_api_key",
"*.R.string.google_storage_bucket",
"*.R.integer.google_play_services_version",
//firebase
"*.R.string.project_id",
//firebase crashlytics
"*.R.string.com.google.firebase.crashlytics.mapping_file_id",
"*.R.bool.com.crashlytics.useFirebaseAppId",
"*.R.string.com.crashlytics.useFirebaseAppId",
"*.R.string.google_app_id",
"*.R.bool.com.crashlytics.CollectDeviceIdentifiers",
"*.R.string.com.crashlytics.CollectDeviceIdentifiers",
"*.R.bool.com.crashlytics.CollectUserIdentifiers",
"*.R.string.com.crashlytics.CollectUserIdentifiers",
"*.R.string.com.crashlytics.ApiEndpoint",
"*.R.string.com.crashlytics.android.build_id",
"*.R.bool.com.crashlytics.RequireBuildId",
"*.R.string.com.crashlytics.RequireBuildId",
"*.R.bool.com.crashlytics.CollectCustomLogs",
"*.R.string.com.crashlytics.CollectCustomLogs",
"*.R.bool.com.crashlytics.Trace",
"*.R.string.com.crashlytics.Trace",
"*.R.string.com.crashlytics.CollectCustomKeys"
]
mergeDuplicateResources = true // allow the merge of duplicate resources
enableFileFiltering = true
enableFilterStrings = true
fileFilterList = [ // file filter rules
"META-INF/*",
// "/armeabi-v7a/",
// "/arm64-v8a/",
// "/x86/",
// "/x86_64/"
]
unusedStringFile = "path/to/your/unused_strings.txt" // strings will be filtered in this file
localeWhiteList = ["en", "in", "fr"] //keep en,en-xx,in,in-xx,fr,fr-xx and remove others locale.
}
Uso
Para ofuscar tus recursos y generar un AAB ofuscado, ejecuta el siguiente comando de Gradle en el directorio raíz del proyecto.:
./gradle clean :app:resChiperDebug --stacktrace
Este comando ejecutará el proceso de ofuscación desde la raíz del proyecto, y el AAB ofuscado se generará en
el directorio app/build/outputs/bundle/debug.Opciones de Configuración
La extensión ResChiper ofrece varias opciones de configuración para la ofuscación de recursos, incluyendo habilitar/deshabilitar la ofuscación, especificar archivos de mapeo, listas blancas de recursos, y más.
enableObfuscation: Habilitar o deshabilitar la ofuscación de recursos.obfuscationMode: para ofuscar solo directorios establecerobfuscationMode = "dir", para ofuscar solo archivos establecer
obfuscationMode = "file" y para ofuscar tanto directorios como archivos establecer obfuscationMode = "default".enableFilterStrings: Ingresar los splits de archivos no usados por líneas para soportar la eliminación de cadenas.enableFileFiltering: Soporte para filtrar archivos en el paquete bundle. Actualmente solo soporta filtrado en
META-INFO/ y lib/.obfuscatedBundleName: Nombre del archivo AAB ofuscado.mergeDuplicateResources: eliminar archivos de recursos duplicados y reducir el tamaño del paquete.mappingFile: Ruta al archivo de mapeo de ProGuard (establecer solo cuando se use mapping.txt para la ofuscación).whiteList: Conjunto de nombres de recursos para excluir de la ofuscación.fileFilterList: Lista de patrones de archivos para filtrar.unusedStringFile: Ruta a un archivo que contiene cadenas no usadas.localeWhiteList: Conjunto de locales para incluir en el AAB.
Ejemplo
puedes consultar algunos ejemplos de configuración aquí
Lista Blanca
recursos que no son ofuscados durante el proceso de compilación.
puedes encontrar configuraciones de whiteList aquí.
Salida
Después de ejecutar el proceso de ofuscación, puedes esperar los siguientes archivos de salida:
- aab: Este es el paquete bundle ofuscado, que contiene tu Android App Bundle (AAB) con recursos ofuscados.
- resources-mapping.txt: Este archivo contiene el mapeo de la ofuscación de recursos. Puede usarse como entrada para futuros
consistencia entre diferentes compilaciones.
- -duplicated.txt: Este archivo de registro proporciona información sobre recursos fusionados. Te ayuda a identificar y rastrear cualquier
Estos archivos de salida se generarán como resultado de ejecutar la herramienta ResChiper, y puedes encontrarlos en los directorios relevantes dentro de la salida de compilación de tu proyecto.
Agradecimientos
ResChiper está inspirado en los siguientes proyectos y herramientas:
Licencia
Copyright (C) 2023 goldfish07 (Ayush Bisht)
ResChiper es software libre: puedes redistribuirlo y/o modificarlo bajo los términos de la Licencia Apache, Versión 2.0 publicada por la Fundación Apache Software, ya sea la versión 2.0 de la Licencia, o (a tu elección) cualquier versión posterior.
Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puedes usar este archivo excepto en cumplimiento con la Licencia. Puedes obtener una copia de la Licencia en
http://www.apache.org/licenses/LICENSE-2.0
A menos que lo requiera la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulta la Licencia para conocer el idioma específico que rige los permisos y limitaciones bajo la Licencia. --- Tranlated By Open Ai Tx | Last indexed: 2026-06-02 ---
