¿Cómo depuro un APK que está firmado para su lanzamiento?

6 minutos de lectura

Avatar de usuario de Adil Hussain
adil hussein

Tengo un APK de lanzamiento que he firmado, subido a Google Play e instalado en mi dispositivo Android. Me gustaría depurar este APK (por medio de Android Studio o Eclipse) mientras se ejecuta en mi dispositivo Android. He hecho esto antes y recuerdo que fue con una de las herramientas de desarrollo de Android (quizás Dalvik Debug Monitor). Lamentablemente, no recuerdo cómo hacerlo y no he podido encontrar ningún artículo en línea. ¿Alguien sabe cómo puedo hacer esto?

notas

  1. Yo he puesto android:debuggable="true" en el archivo de manifiesto de la aplicación.
  2. He habilitado la depuración de USB en mi dispositivo Android.

  • ¿Qué estás intentando actualmente? ¿No sabes cómo usar la Vista de Dispositivos en Eclipse?

    – Sam Dorzor

    31 de enero de 2012 a las 15:32


  • Ahora tengo la vista Dispositivos que se muestra en Eclipse. Puedo ver mi dispositivo en la lista de Dispositivos. Hago clic en él, pero el botón “Depurar el proceso seleccionado” está deshabilitado a pesar de que la aplicación se ejecuta en el teléfono y el proyecto de origen está presente y abierto en el espacio de trabajo. ¡¿Algunas ideas?!

    –Adil Hussein

    31 de enero de 2012 a las 15:43


  • ¿Está haciendo clic en el nombre del paquete para su aplicación?

    – Sam Dorzor

    31 de enero de 2012 a las 15:48

  • Sí. Ver comentario en tu respuesta. (Gracias por la ayuda por cierto. Se lo agradezco.)

    –Adil Hussein

    31 de enero de 2012 a las 16:12

Avatar de usuario de Manuel Lopera
Manuel Lopera

Sé que esta es una pregunta antigua, pero referencias futuras. En Android Studio con Gradle:

buildTypes {
    release {
        debuggable true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

La línea debuggable true fue el truco para mí.

Antes de Gradle 1.0 era runProguard en lugar de minifyEnabled. Mira a aquí.

  • Tenga en cuenta que a partir de gradle 1.0 es minifyEnabled en lugar de correrProguard – ver tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

    – m02ph3u5

    11/11/2015 a las 16:35

  • Como nota a esta respuesta actual, yo mismo evitaría enviar una versión depurable a la tienda Google Play, y es posible que no le permita como en el caso de hasnain_ahmad en la respuesta obsoleta anterior. Solo hacerlo temporalmente para probar un problema de lanzamiento descargado de la tienda, como el seguimiento del código de compra en la aplicación, sería menos riesgoso. También puede intentar trabajar con la pista beta (no sé si esto puede dar el mismo error que recibió Hasnian) o transferir el apk de compilación de lanzamiento a su teléfono desde su computadora para evitar problemas de seguridad (lidiar con el paquete es más complicado ).

    – Androidcodificador

    29 sep 2019 a las 13:35


  • Eso ya no parece funcionar (cuando debuggable se establece en true, el comunicado no está firmado). stackoverflow.com/a/66622555/1720199

    – cglacet

    13 de julio de 2022 a las 8:52

Avatar de usuario de Sam Dozor
sam dozor

Estar seguro de que android:debuggable="true" se establece en el application etiqueta de su archivo de manifiesto, y luego:

  1. Conecte su teléfono a su computadora y habilite la depuración USB en el teléfono
  2. Abra Eclipse y un espacio de trabajo que contenga el código de su aplicación.
  3. En Eclipse, vaya a Ventana->Mostrar vista->Dispositivos
  4. Mire la vista Dispositivos que ahora debería estar visible, debería ver su dispositivo en la lista
  5. Si su dispositivo no está en la lista, deberá buscar los controladores ADB para su teléfono antes de continuar.
  6. Si desea recorrer paso a paso el código, establezca un punto de interrupción en algún lugar de su aplicación
  7. Abre la aplicación en tu teléfono
  8. En la vista Dispositivos, expanda la entrada de su teléfono si aún no está expandida y busque el nombre del paquete de su aplicación.
  9. Haga clic en el nombre del paquete y, en la parte superior derecha de la vista Dispositivos, debería ver un error verde junto con otros botones pequeños. Haz clic en el insecto verde.
  10. Ahora deberías estar adjuntando/depurando tu aplicación.

  • Subí al paso 8, pero por algún motivo, el nombre del paquete de mi aplicación no aparece cuando estoy ejecutando el apk firmado/liberado. (Extrañamente, se muestra cuando ejecuto la aplicación (apk de depuración) en mi teléfono directamente desde Eclipse). Confundido…

    –Adil Hussein

    31 de enero de 2012 a las 16:18

  • ¡Entiendo! había puesto el android:debuggable="true" atributo en el manifest etiqueta en lugar de la application ¡etiqueta dentro del manifiesto! Mi error 🙁 Muchas gracias Sam_D por tu orientación. ¡No lo habría hecho sin ti o, en el mejor de los casos, me habría llevado muchísimo tiempo!

    –Adil Hussein

    31 de enero de 2012 a las 16:25


  • Cuando agrego la palabra clave depurable en build.gradle y quiero publicar en Play Store, muestra este error You uploaded a debuggable APK. For security reasons you need to disable debugging before it can be published in Google Play.

    – hasnain_ahmad

    23 de abril de 2018 a las 11:46

  • Esta respuesta está muy desactualizada. En lugar de androidManifest.xml deberías actualizar build.gradle. Ver otras respuestas.

    – Antimonito

    16 de enero de 2019 a las 12:19

  • @hasnain_ahmad ¿Pudiste encontrar una solución para esto?

    – Shashank Saxena

    22 de julio de 2019 a las 8:05

Además de la manera de Manuel, todavía puedes usar el Manifiesto.

En Android Studio estable, debe agregar las siguientes 2 líneas a application en el AndroidManifest archivo:

    android:debuggable="true"
    tools:ignore="HardcodedDebugMode"

El primero permitirá la depuración de APK firmados y el segundo evitará errores en tiempo de compilación.

Después de esto, puede adjuntar al proceso a través del botón “Adjuntar depurador al proceso de Android”.

¿Cómo depuro un APK que está firmado para su lanzamiento?

  • @jaibatrik tiene que ser tu apk y tienes que adjuntar el depurador de las fuentes. si está haciendo ambas cosas y aún no funciona, comparta más información y puedo intentar ayudar

    – sandalone

    19 de junio de 2016 a las 20:14

  • Obtuve “[Fatal Error] :7:203: El prefijo “herramientas” para el atributo “herramientas: ignorar” asociado con un tipo de elemento “aplicación” no está vinculado”. ¿Herramientas: ignorar = “HardcodedDebugMode” es una configuración legítima aquí?

    – JD

    28 de abril de 2017 a las 3:03

  • tuve que agregar lintOptions { abortOnError false } en mi app/build.grade en lugar de usar tools:ignore al igual que: android { lintOptions: { abortOnError false } }

    – YoshiJaeger

    24 de noviembre de 2019 a las 13:33


  • obtuve The prefix "tools" for attribute "tools:ignore" associated with an element type "application" is not bound. !

    – Oliver D.

    29 de noviembre de 2019 a las 17:09


Probé con lo siguiente y funcionó:

release {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

En caso de que hayas decidido la depuración. su apk que ya está en el mercado pero no está asignado para ser depurable y no desea volver a publicarlo. Así que siga los pasos a continuación;

  1. Descompilar el Apk con ApkTool(p.ej. apktool d <APK_PATH>)
  2. Abra AndroidManifest.xml desde archivos descompilados
  3. Colocar android:debuggable="true" en application etiqueta
  4. Compile la fuente modificada con ApkTool (ej. apktool b <MODIFIED_PATH>)
  5. Apk depurable listo (que sin firmar significa que no puede publicar la tienda). Puede depurar como desee.

Agregue lo siguiente a su aplicación build.gradle y seleccione la variante de compilación de versión especificada y ejecute

signingConfigs {
        config {
            keyAlias 'keyalias'
            keyPassword 'keypwd'
            storeFile file('<<KEYSTORE-PATH>>.keystore')
            storePassword 'pwd'
        }
    }
    buildTypes {
      release {
          debuggable true
          signingConfig signingConfigs.config
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

ingrese la descripción de la imagen aquí

Agregar debuggable true en release en buildTypes y encienda ‘liberar’ en la parte inferior izquierda Build Variants en el estudio de Android Fuente: https://mobikul.com/release-variant-of-app-enable-logcat-running-release-build-application/
¡Me funciona! ¿Puedes probarlo?

¿Ha sido útil esta solución?