Pulsa aquí para quitar la publicidad.

[TUTORIAL] Descompilar - Modificar - Recompilar una APK

Tema en 'Cocina Android y Traducciones' iniciado por hammy, 24 Jul 2012.

  1. hammy

    hammy Simdualero de Diamante

    • Veteran@
    1.517
    155
    30 Ago 2011
    Sevilla
    Vamos a explicar de forma sencilla como modificar una aplicación de android en Windows y no morir en el intento. @telo, que ya hace mucho que no aparece por aquí dejó esto mismo escrito en un hilo que cayó en el olvido, de forma mas escueta. Yo os lo detallo un poco más. Gracias a @breakk que me recomendó este tema para descompilar aplicaciones. De esta única forma he podido hacer todo el proceso sin que las aplicaciones den error en algún momento.

    Modificar .png's es muy sencillo y solo es sustituir unos por otros en al .apk directamente. Sin embargo, modificar un .xml entraña un mayor trabajo, pues los .xml vienen compilados en la .apk y si intentamos extraerlos y abrirlos sin más nos encontraremos con una sucesión de caracteres que es imposible de leer. Por ello necesitamos "traducir" ese lenguaje codificado. Y para ello necesitamos "descompilar" la aplicación correspondiente. En concreto solo lo vamos a hacer con aplicaciones de sistema, que no necesitan ser firmadas despues de recompilar. Además solo para el caso de que las aplicaciones no dependan de otras apks, como el caso de algunas aplicaciones de HTC con sense.

    Vamos a necesitar:
    - Aplicación "APK Manager 5.0.2". La podemos descargar de aqui.
    - Editor de texto "Notepad++". Lo obtenemos aqui.


    Una vez que se tiene el apkmanager podremos observar lo que contiene.

    other -> son dependencias, librerias... el núcleo de la aplicación.
    place-apk-here-for-modding -> aqui van los .apk que queremos decompilar para modificarlos.
    place-apk-here-for-signing -> aqui van los .apk que queremos firmar, solo en aplicaciones que no sean del sistema, las de sistema no se firman.
    projects -> aqui se crea el .apk decompilado que esta en place-apk-here-for-modding
    Script.bat -> interfaz visual del programa.


    Los pasos a seguir serían los siguientes:

    Primero:
    Copiamos el archivo .apk correspondiente a la carpeta "place-apk-here-for-moding".

    Segundo:
    Hacemos doble click en "Script.bat" y se nos abrirá una ventana de símbolo de sistema con el menu principal de la aplicacion.

    Tercero:
    Escribir 22 y pulsamos enter, ahí nos saldra la lista de .apks de la carpeta place-apk-here-for-modding, elegimos la que queramos con numeros.

    Cuarto:
    Elegimos la opción 9 (Descompilar).

    Quinto:
    Cuando se descompile, vamos a la carpeta "projects" y a la carpeta de la .apk descompilada, y vamos abriendo y modificando con Notepad++ los .xml necesarios.

    Sexto:
    Una vez modificado todo, regresamos al Símbolo del Sistema, elegimos la opcion 11 (Compilar). Si lo que tocamos lo hicimos bien, nos preguntara si es una aplicacion del sistema. Escribimos "y" y pulsamos enter. Luego nos preguntara si queremos hacer una carpeta temporal con los archivos originales. Le decimos que si ("y") y comenzara a descomprimir los archivos originales en la carpeta "keep" que creara solo el programa, llegara un momento que te pedira que pulses un boton para continuar. NO PULSAMOS NADA!

    Septimo:
    Vamos a la carpeta "keep" y eliminamos todo lo que hemos modificado.

    * Si hemos modificado traducciones o la carpeta "values" borramos el resources.arsc.
    * Si modificamos imagenes o xml simples pues borramos la carpeta entera donde se encuentre la imagen o el .xml modificado. Por ejemplo si modificamos los porcentajes de la bateria pues borramos la carpeta drawable entera

    Octavo:
    Volvemos a la interfaz grafica y ahora si pulsamos enter. Ahora esperamos que termine y vamos a la carpeta "place-apk-here-for-modding" hay tendremos la aplicacion recreada con el nombre unsignedaplicacion.apk. Si es aplicacion del sistema simplemente la renombramos (le quitamos el unsigned).

    Si no fuera aplicacion del sistema la tendriamos que firmar.


    Y esto es todo, si no hemos metido la pata en algún .xml todo habrá salido correctamente. Metemos la apk en un parche y flasheamos desde recovery.


    Saludos, hammy.
     
    Última edición por un moderador: 30 Dic 2013
    • Me Gusta Me Gusta x 1
    • hammy

      hammy Simdualero de Diamante

      • Veteran@
      1.517
      155
      30 Ago 2011
      Sevilla
      Última edición por un moderador: 28 Sep 2013
    • Breakk

      Breakk Simdualero de Diamante

      • Cocinero Android
      • Veteran@
      11.944
      20.220
      31 May 2010
      @hammyhammy, muy buen tutorial.

      Te has adelantado. Tenia pensado hacerlo, despues de la indirecta de los amigos @samarkandasamarkanda y @eduardomoeduardomo, je,je,je.

      Lo cierto es que ando muy liado, entre ordenar el foro de marcas, la rom puzzle, las tareas de casa, mi madre..........uffff no doy abasto.

      Venga saludos y lo dicho, muy buen trabajo.
       
      Última edición por un moderador: 28 Sep 2013
    • Huanhuan

      Huanhuan Simdualero Junior

        1
        0
        8 Oct 2013
        Barcelona
        Hola @hammyhammy,
        Primero de todo, gracias por este tutorial.
        Estoy traduciendo una ROM para un teléfono Lenovo S890, será la primera que haga, ya que después voy a hacer las mismas traducciones a todo el sistema para el modelo K860i. Tengo traducidas casi todas las aplicaciones del sistema, pero quiero probarlas de una en una. Ahora mismo me gustaría comenzar por settings.apk. ¿Podrías explicar el proceso de parchear y flashear desde el recovery?, ¿es necesario realizar un script que elimine la aplicación antigua e instale la ya traducida para que recovery lo ejecute?
        Ejemplo: delete SYSTEM:app/Settings.apk (dentro del archivo update-script)

        Un saludo de antemano.

        Huanhuan.
         
        Última edición: 8 Oct 2013
      Verificación:
      Borrador guardado Borrador eliminado

      Compartir esta página

      Galletas! Nos obligan a informar que utilizamos cookies (como casi todas las webs). Al continuar navegando aceptas su uso.