¿Se puede descompilar el apk compilado por el motor cocos2dx?
java -jar apktool_2.0.0b7.jar d -d test.apk -o out.
Aquí se debe utilizar el parámetro -d para que el sufijo del código descompilado sea java, porque la depuración de eclipse/netbeans solo puede reconocer archivos java.
2. Configure el indicador de depuración y busque la clase principal.
En la carpeta de salida, use una herramienta de edición de texto para abrir AndroidManifest.xml y configure el atributo android:debuggable=" en el nodo de la aplicación es verdadero".
Continúe buscando las siguientes palabras clave en AndroidManifest.xml
lt; intent-filtergt; action android: name="android.intent.action.MAIN"/gt; lt .category android:name="android.intent.category.LAUNCHER"/gt; lt;/intent-filtergt;
Busque el nodo de actividad que contiene la información anterior y registre el valor de su android:name atributo. Este valor es la clase principal de su aplicación. En el siguiente ejemplo, la clase principal es com.acids.helloworld.MainActivity.
lt;?xml version="1.0" encoding="utf-8" standalone="no"?gt;lt; xmlns manifiesto: android="/apk/res/android" paquete="com.acids.allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme=" @style/AppTheme"gt; lt; actividad android: label="@string/app_name" android: nombre="com.acids.helloworld.MainActivity"gt; lt; intent-filtergt; lt; acción android: nombre="android .intent.action.MAIN"/gt; lt; categoría android: nombre="android.intent.category.LAUNCHER"/gt; lt;/intent-filtergt; lt;/activitygt; lt;/applicationgt; lt;/manifestgt ;
3. Agregue espera de depuración para el evento onCreate de la clase principal.
Abra el archivo de clase principal con una herramienta de edición de texto, busque el método onCreate, inserte invoke-static {}, Landroid/os/Debug; waitForDebugger()V delante de la primera oración, recuerda agregar a=0; // Prefijo, mantener arriba y abajo, el resultado es el siguiente:
a=0; // # Método virtual a=0; método protegido onCreate(Landroid/os/Bundle;)V a=0; // invoke-static {}, Landroid/os/Debug; -gt.waitForDebugger()V a=0; locales 1 a=0; // .param p1, "savedInstanceState" # Landroid/os/Bundle; a=0;/ // .prologue a=0; /invoke-super {p0, p1}, Landroid/app/Activity; -gt; onCreate(Landroid/os/Bundle;)V
4. . apk
java - jar apktool_2.0.0b7.jar b -d out -o debug.apk
5. Firme debug.apk (debe descargar la herramienta de firma), firmará La herramienta se coloca en la carpeta signapk y genera debug.sign.apk
java -jar .\signapk\signapk.jar .\signapk\testkey.x509.pem .\signapk\testkey.pk8 .\debug .apk .\debug.sign.apk
6. Cargue debug.sign.apk en su teléfono o emulador, luego instálelo y ejecútelo. En este punto, verá que el programa se ejecuta y permanece en la interfaz de pantalla blanca. No mueva el dispositivo y salga del programa en este momento, porque en este momento el programa se ejecuta en el lugar donde se acaba de agregar el código waitForDebugger. Esta línea de código significa que ha estado bloqueada esperando al depurador.
El siguiente paso es configurar un entorno de depuración en tiempo real.
7. Inicie eclipse y cree el proyecto java
1) File-gt; New-gt; Proyecto Java-gt; > 2) El nombre del proyecto es arbitrario, use la opción de ubicación predeterminada para eliminar, seleccione la carpeta de salida como ubicación y luego el siguiente paso
3) Configure la carpeta pequeña como la carpeta de origen y luego complete
8. En eclipse, abra la clase principal. Abra la clase principal que se encuentra en el paso 2 en eclipse, busque el método onCreate, agregue un punto de interrupción en el primer método después del método waitForDebugger.first y comience a agregar puntos de interrupción. Como se muestra a continuación
9. Abra DDMS (la ruta se encuentra en android-sdks\tools\ddms.bat. Si ejecuta el programa modificado en el paso 6, se mostrarán los dispositivos que se pueden depurar). en el programa de lista de dispositivos DDMS.
La última columna del programa correspondiente es 8600/8700, donde 8600 es el puerto del depurador.
10. Todo lo que tienes que hacer ahora es asociar el código con el depurador. Regrese a eclipse y configure la depuración remota
1) Menú Ejecutar-gt; Configuración de depuración
2) Haga doble clic en Aplicación Java remota, el valor predeterminado es localhost en Host, y completa los pasos Puerto en 10. 8600, luego aplique -gt;
11. En este momento, eclipse cambiará automáticamente a la vista de depuración y verá la siguiente línea de código ejecutable donde el programa se ejecutó e interrumpió, y las variables relevantes se pueden ver directamente.