support studio que modulos last crear android debugging android-studio breakpoints

que - El depurador de Android Studio no se detiene en puntos de interrupción dentro de los módulos de la biblioteca



crear modulos en android studio (6)

En este momento estoy desarrollando una aplicación para Android que se basa en código de terceros. Comencé a establecer puntos de interrupción para comprender el código y pronto me encontré con un problema. De repente, ya no pude hacer que Android Studio se detuviera en los puntos de interrupción.

Traté de establecer los puntos de interrupción dentro de los métodos onCreate , dentro de los botones '' OnClickListener s - nada funcionó. Ahora descubrí que el único lugar donde funciona es dentro del módulo de la aplicación. Como el proyecto solo tiene una sola clase de actividad en el módulo de la aplicación y todo lo demás se proporciona dentro de los módulos de la biblioteca, de hecho, no puedo depurar en absoluto.

Supongo que hay algo mal en AndroidManifest.xml o más probablemente en el archivo build.gradle. Como acabo de cambiar de Eclipse a Android Studio, todo esto es bastante nuevo para mí.

Si paso el mouse sobre un punto de interrupción de la biblioteca mientras la aplicación se está ejecutando, me dice que "no se encontró ningún código ejecutable en la línea ...". Supongo que esta es la causa de mi problema, pero no tengo idea de cómo solucionarlo.

¿Hay algún "sospechoso habitual" entre las entradas en build.gradle que pueda causar mi problema?

Ya limpié mi proyecto e invalidé el caché sin éxito. Incluso probé la sugerencia de agregar entradas de <activity> dentro del módulo de biblioteca para los fragmentos dentro.

Editar : estoy usando la versión más reciente de Android Studio (versión 1.1.0 del 18 de febrero) que debería tener el error similar corregido que existió hace algún tiempo.

El contenido de build.gradle en el módulo de la aplicación:

apply plugin: ''com.android.application'' android { compileSdkVersion 19 buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION defaultConfig { minSdkVersion Integer.parseInt(project.MIN_SDK) targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) } signingConfigs { release { keyAlias ''xxx'' keyPassword ''xxx'' storeFile file(''xxx'') storePassword ''xxx'' } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt'' signingConfig signingConfigs.release debuggable false jniDebuggable false zipAlignEnabled true } debug { minifyEnabled false debuggable true } } packagingOptions { exclude ''META-INF/DEPENDENCIES'' exclude ''META-INF/NOTICE'' exclude ''META-INF/LICENSE'' exclude ''META-INF/LICENSE.txt'' exclude ''META-INF/NOTICE.txt'' } productFlavors { } } dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile project('':firebase_plugin'') }

Y el build.gradle del módulo de biblioteca:

apply plugin: ''com.android.library'' android { compileSdkVersion 19 buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION defaultConfig { minSdkVersion Integer.parseInt(project.MIN_SDK) targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) } buildTypes { release { minifyEnabled true zipAlignEnabled true proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt'' } debug { minifyEnabled false debuggable true } } productFlavors { } } dependencies { // Facebook SDK compile project('':facebook'') // Used for StringUtils compile files(''libs/commons-lang3-3.3.2.jar'') // Bug tracking compile files(''libs/bugsense-3.6.1.jar'') compile fileTree(include: [''*.jar''], dir: ''libs'') //Google Play Services - For Google Maps compile(''com.google.android.gms:play-services:5.0.89'') { exclude group: ''com.google.android'', module: ''support-v4'' } // Support Library. compile ''com.android.support:support-v13:18.0.+'' compile(''com.android.support:appcompat-v7:19.1.0'') { exclude group: ''com.google.android'', module: ''support-v4'' } // Volley - Networking library from google. compile(''com.mcxiaoke.volley:library:1.0.0'') { exclude group: ''com.google.android'', module: ''support-v4'' } // Has is own support library in it so need to exclude it so no TOP_LEVEL_EXCEPTION will occur. compile(''de.greenrobot:greendao:1.3.0'') { exclude group: ''com.google.android'', module: ''support-v4'' } // Firebase compile(''com.firebase:firebase-simple-login:1.4.2'') { exclude group: ''com.android.support'', module: ''support-v4'' } // Super Toast compile(''com.github.johnpersano:supertoasts:1.3.4@aar'') { exclude group: ''com.android.support'', module: ''support-v4'' } // Croping images compile(''com.soundcloud.android:android-crop:0.9.10@aar'') { exclude group: ''com.android.support'', module: ''support-v4'' } compile(''com.github.chrisbanes.actionbarpulltorefresh:library:0.9.9'') { exclude group: ''com.android.support'', module: ''support-v4'' } } packagingOptions { exclude ''META-INF/DEPENDENCIES'' exclude ''META-INF/NOTICE'' exclude ''META-INF/LICENSE'' exclude ''META-INF/LICENSE.txt'' exclude ''META-INF/NOTICE.txt'' } productFlavors { } } dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile project('':firebase_plugin'') }


Además de la respuesta de olik79, me gustaría agregar que estas dos líneas harán que su aplicación llegue a los puntos de interrupción en fragmentos. de lo contrario, puede pasar fragmentos

-keep public class * extends android.support.v4.** {*;} -keep public class * extends android.app.Fragment

Aquí está mi edición completa en proguard-android.txt en sdk / tools / proguard

# The support library contains references to newer platform versions. # Don''t warn about those in case this app is linking against an older # platform version. We know about them, and they are safe. -dontwarn android.support.** -keep class !android.support.v7.internal.view.menu.**,android.support.** {*;} -ignorewarnings -renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -keep public class * extends android.support.v4.** {*;} -keep public class * extends android.app.Fragment


Como se indicó en los comentarios de este problema, establecer minifyEnabled false en la compilación de depuración es la mejor práctica. Al configurar esta variable en el módulo de la aplicación, está deshabilitando todo el proceso de compilación de proguard. Es útil al optimizar la compilación de lanzamiento, pero da algunos problemas si está probando y desarrollando.



Descubrí que el problema era que Android Studio estaba en modo fuera de línea. Cuando cambié del modo fuera de línea, esto permitió que la depuración funcionara de manera efectiva.


Lo resolví, aunque todavía no lo entiendo completamente. El problema era que ProGuard todavía estaba activo como sugirió @Feantury. No sé por qué fue así, ya que especifiqué minifyEnabled false en cada posición build.gradle que podía imaginar, pero parece que no tuvo ningún efecto.

Como tuve un accidente hace solo unos minutos, vi líneas en el stacktrace que se veían así:

java.lang.NullPointerException at com.example.MyClass(Unknown Source) ...

Eso convirtió a ProGuard en el sospechoso número uno para mí. Después de buscar un poco, encontré otra pregunta SO que se ocupa del problema de Fuente Desconocida . Probé la solución sugerida para la depuración con ProGuard habilitado y ¡voilà funcionó!

Simplemente agregue las siguientes líneas a proguard-rules.txt:

-renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable


Tuve un problema al intentar depurar el código de Kotlin. El depurador no se detuvo en ninguno de los puntos de interrupción. Resulta que fue un problema con la ejecución instantánea . Eliminé todos los directorios de compilación de mi proyecto, luego desinstalé la aplicación y deshabilité la ejecución instantánea.

Para deshabilitar la ejecución instantánea, vaya a Archivo> Configuración> Compilación, ejecución, implementación> Ejecución instantánea > Desmarque Habilitar ejecución instantánea