Colección de citas famosas - Slogan de motivación - ¿Cómo mezclar código después de integrar y compartir SDK con Android?

¿Cómo mezclar código después de integrar y compartir SDK con Android?

Para proteger el código contra la descompilación, Android introduce el concepto de código ofuscado.

1. Configuraciones confusas

Busque el archivo project.properties en el proyecto.

Agregue proguard .config = $ { SDK ./tools/proguard/proguard-Android . Esto es sistémico.

También puedes usar tu propio archivo ofuscado (para que puedas configurar algunas cosas por tu cuenta), ve a sdk.dir}/tools/proguard/ y copia el archivo proguard-android.txt a tu proyecto local.

Luego configúrelo en proguard.config=proguard-Android.txt.

Archivo Project.properties:

[java] Ver texto sin formato

# proguard config = $ { SDK }/tools/proguard/proguard-. Android .txt: proguard-project .txt

proguard config = proguard-Android .

#Project target.

target=android-17

La dirección de injarandroidtest. paquete de frascos.

-dirección de salida de outjars

-library jars'd:\Android-SDK-Windows\platforms\Android-9\Android. jar' se refiere al jar de la biblioteca, utilizado. para analizar la clase jar especificada por injars.

-Optimización pasada 5 veces

-dontusemixedcaseclassnames no producirá varios nombres de clases cuando se confundan.

-dontskipnoppubliclibraryclasses especifica que las clases de bibliotecas no públicas no deben ignorarse.

-No realizar preverificación sin preverificación.

-Muy detallado

¡Optimizado! ¡Código/simplificación/aritmética! campo/*,! Clasificación/Fusionar/*Optimización

-mantener la clase pública * extender la actividad de la aplicación Android no se confunde y permanece sin cambios.

-Mantener la clase pública *extender android.app.Application

-Mantener la clase pública*extender android.app.Service

-Mantener la clase pública *extiende el contenido de Android.

-Mantiene la clase pública *extiende el contenido de Android.

-Mantiene la clase pública *extiende la aplicación de copia de seguridad de Android. /p>

-Mantener clase pública * extiende android.preference.Preference

-Mantener clase pública com.Android.vending.licensing.ilisensingservice

-Mantener interfaz abstracta pública com .asqw.android Oyente{

Protección pública<. Métodos > Todos los métodos no están ofuscados.

}

-Mantener la clase pública com.asqw.android{

public void Start(Java . lang . string); este enfoque es menos confuso.

}

-keepclasswithmembernames clase * {Si todos los miembros de la clase especificada están presentes (después del paso de compresión), proteja los nombres de la clase especificada y de los miembros de la clase.

Local<Methods>

}

-keepclasswithmembers class * {Protege la clase y los miembros de la clase especificados, siempre que todas las clases y los miembros de la clase especificados estén presentes.

Público <init>(android.content.Context, Android.util.attributeset);

}

-keepclasseswithmembers clase * {

public <init>(android.content.Context, android.util.AttributeSet, int);

}

-mantener los miembros de la clase class * extender la actividad .app de Android {Proteger a los miembros de la. clase especificada. Si esta clase está protegida, estarán mejor protegidos.

public void * (Android . view . view);

}

-keepclassmembers enumeración * {

public static * * 【 】valores();

valor estático público * de (Java . lang . string);

}

-mantener clase * implementandroid OS . {Proteger el archivo de clase especificado y los miembros de la clase.

SO Android estático final . Parcelable $Creator *;

}

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = Excepciones comunes = = = = = = = = = = = = = = = = = = = = = = = = = =

Referencia:/group/Android-developers/browse _ thread/thread/ECA 3 b 0 F5 ce 6 ad 00 f

Elimino la carpeta proguard generada en el proyecto (la carpeta está vacía en este momento) y luego ejecute el proyecto nuevamente, estará bien.

Caso 3:

[2011-10-21 13:22:32-ZMKSMarket _ Build _ v 1.0] progguard devolvió el código de error 1. Ver la consola

[2011-10-21 13:22:32-ZMKSMarket_Build_v 1.0]Java.io.ioException: No se puede leer [proguard. ClassPathEntry@106082) (No existe tal archivo o directorio)

[2011-10-21 13:22:32-ZMKSMarket _ Build _ v 1.0]

En Proguard.

lector de entrada . readinput (lector de entrada . Java:230)

[2011-10-21 13:22:32-ZMKSMarket_Build_v 1.0]

En Proguard. lector de entrada . readinput (lector de entrada . Java:200)

[2011-10-21 13:22:32-ZMKSMarket_Build_v 1.0]

En Proguard. lector de entrada . readinput (lector de entrada . Java:178)

[2011-10-21 13:22:32-ZMKSMarket_Build_v 1.0]

En Proguard. inputreader ejecutar (inputreader. Java:100)

[2011-10-21 13:22:32-ZMKSMarket_Build_v 1.0]

En Proguard. proguard . readinput (proguard . Java:195)

[2011-10-21 13:22:32 - ZMKSMarket_Build_v 1.0]

En proguard. proguard . ejecutar (proguard . Java:78)

[2011-10-21 13:22:32 - ZMKSMarket_Build_v 1.0]

En proguard. proguard. main (proguard. Java:499)

La razón para generar tal excepción es que la ruta de referencia del jar de terceros es incorrecta y no se encuentra el paquete jar que debe ignorarse. .

= = = = = = = = = = = = = = = Traducción oficial del documento = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Texto original

/guide/developing/tools/proguard.html

Proguard

En este documento.

Habilitador

Configurador

Decodificar seguimientos de pila ofuscados

Consideraciones de depuración para aplicaciones publicadas

Ver

¿Manual de ProGuard?

¿Reinstalar el manual de ProGuard?

El ofuscador comprime, optimiza y ofusca el código eliminando código que nunca se utiliza y cambiando el nombre de clases, campos y métodos con nombres ambiguos. El resultado es relativamente pequeño. apk, que son difíciles de realizar mediante ingeniería inversa. Por lo tanto, la ofuscación es un medio de protección importante cuando su aplicación es sensible a la seguridad (exigente), como cuando la autoriza.

El ofuscador está integrado en el sistema de compilación de Android, por lo que no es necesario llamarlo manualmente. Al mismo tiempo, el ofuscador solo funciona cuando se compila la aplicación en modo de lanzamiento, por lo que no tiene que lidiar con código ofuscado al compilar el programa en modo de depuración. Ejecutar el ofuscador es opcional, pero se recomienda.

Este documento describe cómo habilitar y configurar el ofuscador y cómo utilizar la herramienta de seguimiento para decodificar los retornos de pila ofuscados.

Habilitar Proguard Enabler

Cuando creas un nuevo proyecto de Android, se crea automáticamente un archivo proguard.cfg en el directorio raíz del proyecto. Este archivo define cómo el ofuscador optimiza y ofusca su código, por lo que es importante comprender cómo adaptarlo a sus necesidades.

El archivo de configuración predeterminado solo cubre los casos habituales, por lo que es posible que deba editarlo para adaptarlo a sus necesidades. Lo que sigue trata sobre la configuración del fuzzer a través de un archivo de configuración de fuzzer personalizado.

Para habilitar proguard durante el proceso de compilación de Ant o Eclipse, puede hacerlo en

Si deja el archivo proguard.cfg en la ubicación predeterminada (la raíz del proyecto) , te puede gustar Especificar la ubicación de esta manera:

proguard.config=proguard.cfg

De manera similar, puedes colocar el archivo en cualquier lugar y especificar su ruta absoluta.

proguard . config =/path/to/proguard .

Cuando compila la aplicación en modo de lanzamiento, ya sea ejecutando ant release o usando export en el Asistente de Eclipse, el El sistema de compilación comprobará automáticamente si la propiedad proguard.config está configurada. Si el ofuscador está configurado, envolverá todo. archivo apk. La compilación en modo de depuración no invocará al ofuscador porque la depuración será más complicada.

El archivo de salida después de ejecutar fuzzer es:

dump.txt

La estructura interna de todos los archivos de clase. paquete apk.

mapping.txt

Enumera las asignaciones entre el código fuente y nombres confusos de clases, métodos y propiedades. Este archivo es útil para informar errores posteriores a la compilación porque convierte información confusa de seguimiento de la pila en nombres de clases, métodos y miembros en el código fuente. Para obtener más información, consulte el seguimiento de la pila después de decodificar el desorden.

seeds.txt

Enumera clases y miembros que no están ofuscados.

usage.txt

Listas de. apk.

Estos archivos se colocan en el siguiente directorio:

Nota: Cada vez que compila en modo de lanzamiento, estos archivos se sobrescribirán con los archivos más recientes. Por lo tanto, guarde una copia de estos archivos cada vez que publique su programa para evitar informes de errores confusos durante el proceso de compilación. Para obtener más información sobre la importancia de guardar estos archivos, revise las notas de depuración publicadas por su programa.

Configuración de Proguard (Configuración del programa)

En algunos casos, la configuración predeterminada del archivo proguard.cfg puede cumplir con los requisitos. Sin embargo, es difícil para un ofuscador hacer un análisis correcto en la mayoría de los casos, y puede eliminar código que no le es útil pero que realmente necesita el programa. Algunos ejemplos son los siguientes:

Solo clases que hacen referencia al archivo AndroidManifest.xml.

Un método llamado JNI.

Propiedades y métodos de referencia dinámica.

& ltproject_root & gt/bin/proguard cuando usas Ant

& ltproject_root & gt/proguard cuando usas Eclipse.

Decodificación de rastros de pila ofuscados.

Cuando el código se confunde y se generan mensajes de depuración de la pila, los nombres de estos métodos también se confunden. Si bien la depuración es posible, la depuración se vuelve difícil. Afortunadamente, cada vez que se ejecuta fuzzer, genera un archivo.

El comando de script Retrace.bat en sistemas Windows o el comando de script retrace.sh en sistemas Linux y Mac OS X pueden convertir información confusa de depuración de pila en archivos comprensibles. Se coloca en

retrace . bat | retrace .sh [-verbose] txt [<archivo de seguimiento de pila>]

Por ejemplo:

retrace. . bat-verbose mapeo .txt ofuscado _ trace .

Si no ha publicado consideraciones de depuración para

su aplicación.

Guarde el archivo mapping.txt para cada programa que se haya publicado para los usuarios.

Al guardar una copia del archivo mapping.txt de su versión de lanzamiento, se asegura de que cuando los usuarios encuentren errores y le envíen seguimientos de depuración de pila confusos, pueda depurar y solucionar el problema. El archivo mapping.txt de su programa se sobrescribe con cada versión y compilación, por lo que debe tener cuidado de guardar la versión correcta.

Por ejemplo, supongamos que ha lanzado una aplicación y continúa desarrollándola y agregando nuevas funciones en nuevas versiones. Luego inicia inmediatamente Proxy y crea una nueva versión de lanzamiento. Esta operación sobrescribirá el archivo mapping.txt. Los usuarios enviaron informes de errores para la versión actual, que contienen información de depuración de la pila. Ya no puede depurar la información de la pila del usuario porque el archivo mapping.txt correspondiente a la versión local del usuario no existe. Hay muchas otras situaciones en las que se sobrescribe el archivo mapping.txt, por lo que debes asegurarte de tener una copia de cada versión que necesites depurar.