Cómo depurar la aplicación de Android en modo de lanzamiento usando Android Studio

4 minutos de lectura

Por alguna razón, tengo que ejecutar mi aplicación de Android en modo de lanzamiento. Tengo que ejecutar el código cuando ejecuto la aplicación tal como lo usamos en el modo de depuración. Mis puntos de quiebre no alcanzan cuando corro en modo de lanzamiento, he agregado android:debuggable="true" en manifiesto. Todavía el punto de quiebre no está golpeando. Alguna ayuda.

Gracias de antemano

avatar de usuario de once2go
una vez2go

En su archivo Gradle, debe agregar la capacidad de depuración en su versión de versión.

buildTypes {
    release {
        debuggable true
        minifyEnabled false
        signingConfig signingConfigs.release
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
    debug {
        debuggable true
        minifyEnabled false
        applicationIdSuffix '.debug'
    } 
}

signingConfig es la configuración de lanzamiento, debe agregarse en el archivo gradle en el bloque android{}, algo como esto:

signingConfigs {
    release {
        keyAlias 'YourAppKey'
        keyPassword 'somePassword'
        storeFile file('appkeyfile.jks')
        storePassword 'somePassword'
    }
} 

  • He agregado esto en mi build gradle. Pero no tengo un archivo signatureConfigs.release. mi firmaConfig es firmaConfigs.config. ¿Cómo puedo generar uno para el lanzamiento?

    – Bazi Paleri

    19 de noviembre de 2015 a las 11:41

  • He agregado todo esto y todavía mi punto de interrupción no está llegando. ¿Hay algo más que elimine el punto de interrupción en el código?

    – Bazi Paleri

    19 de noviembre de 2015 a las 12:04

  • ¿Qué quieres decir con eliminar? Escriba la línea de código en su punto de interrupción

    – una vez2go

    19 de noviembre de 2015 a las 12:06

  • Puedes añadir release { signingConfig signingConfigs.debug } para firmar la compilación de la versión con su certificado de depuración.

    – Sr-IDE

    1 de junio de 2018 a las 15:28


En mi caso, creé la configuración de depuración igual que la versión anterior y comencé a depurar. Significa que tiene que firmar la compilación en la versión de depuración también en la compilación gradle.

signingConfigs {
    config {
        keyAlias 'abc'
        keyPassword 'xyz'
        storeFile file('<<KEYSTORE-PATH>>.keystore')
        storePassword 'password'
    }
}
buildTypes {
  debug {
      debuggable true
      signingConfig signingConfigs.config
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

Por lo tanto, tendrá el mismo signo que la compilación de lanzamiento y podrá depurar cuando se ejecute.

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

feliz codificación. Marque esta respuesta … si ayuda … 🙂

  • Está ahí. Todavía no pego 🙁

    – Bazi Paleri

    19 de noviembre de 2015 a las 11:41

Avatar de usuario de Usman Zafer
usman zafer

Unos céntimos para los recién llegados.

Si incluso después de agregar un verdadero depurable en el bloque de lanzamiento, sus puntos de depuración no se ven afectados.

Elimine el siguiente código del bloque de versión.

    minifyEnabled true 
    shrinkResources true //remove resources
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

Avatar de usuario de Marcin Orlowski
Marcin Orlowski

No hay “modo de lanzamiento”. A lo que te refieres es al tipo de construcción, lo que significa los pasos tomados durante la construcción (como minificar, etc.). Ajuste android:debuggable="true" no ayudará automáticamente, porque cuando “Ejecuta” la aplicación en lugar de “Depurar”, no conecta el depurador, por lo que no se detendrá por ese motivo en particular.

Así que puedes

configure su compilación de depuración para que se produzca de la misma manera que la versión

Pero no está muy claro cuál es el razonamiento detrás de su necesidad y tengo la sensación de que está tratando de ir por el camino equivocado (es decir, la depuración generalmente no usa ProGuard, mientras que la compilación de versión sí lo es y ProGuard cambia el binario resultante para que sus puntos de interrupción de la fuente no lo hagan). realmente funciona de todos modos).

  • Necesito depurar un problema que solo afecta a las compilaciones de lanzamiento, lo que sugiere que es un error creado por un código reducido/ofuscado/optimizado. El problema no se observa en las variantes de depuración.

    – kip2

    1 de noviembre de 2019 a las 8:25

Creo que el argumento anterior de Marcin tiene sentido (al igual que hay situaciones que requieren la depuración de compilaciones de lanzamiento), así que aquí hay una ligera variación de las respuestas aceptadas que me funcionaron:

android {
    ...
    buildTypes {
        release {
            shrinkResources false # this was key
            minifyEnabled false # seems that it can't be set to true if shrinkResources is false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

Adaptado de la documentos oficiales

NOTA:

cuando me puse minifyEnabled truese produjo el siguiente bloqueo al iniciar la aplicación:

java.lang.RuntimeException: Unable to instantiate application co.mycompany.app.MyApp: java.lang.ClassNotFoundException: Didn't find class "co.mycompany.app.MyApp" on path: DexPathList...

  • Necesito depurar un problema que solo afecta a las compilaciones de lanzamiento, lo que sugiere que es un error creado por un código reducido/ofuscado/optimizado. El problema no se observa en las variantes de depuración.

    – kip2

    1 de noviembre de 2019 a las 8:25

¿Ha sido útil esta solución?