Отладчик Android Studio не останавливается на точках останова в библиотечных модулях


на данный момент я разрабатываю приложение для Android, которое основано на стороннем коде. Я начал устанавливать точки останова для понимания кода и вскоре столкнулся с проблемой. Внезапно я больше не мог заставить Android Studio останавливаться на точках останова.

Я пытался установить точки останова внутри onCreate методы, в кнопки' OnClickListeners-ничего не работало. Теперь я узнал, что единственное место, где он работает, находится внутри модуля приложения. Поскольку проект имеет только один класс активности в приложении модуль и все остальное предоставляется в библиотечных модулях на самом деле я не могу отлаживать вообще.

Я предполагаю, что что-то не так в AndroidManifest.XML или скорее всего в сборке.файл gradle. Поскольку я только что переключился с Eclipse на Android Studio, все эти вещи gradle довольно новы для меня.

если я наведу указатель мыши на точку останова библиотеки во время работы приложения, он скажет мне, что "исполняемый код [не найден] в строке ...". Я предполагаю, что это причина моей проблемы, но я понятия не имею, как это исправить.

есть ли какие-либо" обычные подозреваемые " среди записей в сборке.gradle, что может вызвать мою проблему?

Я уже очистил свой проект и аннулировал кэш без успеха. Я даже попробовал предложение добавить <activity> записи внутри модуля библиотеки для фрагментов внутри.

Edit: Я использую самую последнюю версию Android Studio (версия 1.1.0 от 18 февраля), которая должна иметь аналогичный Исправлена ошибка, которая существовала некоторое время назад.

содержимое сборки.gradle в модуле приложения:

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')
}

и строить.gradle модуля библиотеки:

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')
}

5 51

5 ответов:

как указано в комментариях к этому вопросу, установка minifyEnabled false в отладочной сборке это лучшая практика. Установив эту переменную в модуле приложения, вы отключаете весь процесс сборки proguard. Это полезно при оптимизации сборки выпуска, но дает некоторые проблемы, если вы тестируете и разрабатываете.

Я вроде как решил ее,хотя еще не до конца понимаю. Проблема была в том, что ProGuard все еще был активен, как предложил @Feantury. Я не знаю, почему это было так, как я указал minifyEnabled false в каждой сборки.положение Gradle в который я мог себе представить, но, кажется, это не имеет никакого эффекта.

как у меня был сбой всего несколько минут назад, я видел линии в stacktrace, которые выглядели так:

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

что сделал должны подозреваемым номер один для меня. После некоторых поискав вокруг, я нашел еще один такой вопрос что касается Источник. Я попробовал предложенное решение для отладки с помощью ProGuard включить и вуаля все заработало!

просто добавьте следующие строки в proguard-правила.txt:

-renamesourcefileattribute SourceFile    
-keepattributes SourceFile,LineNumberTable

в дополнение к ответу olik79, я хотел бы добавить , что эти две строки заставят ваше приложение попасть в точки останова фрагментами. в противном случае это может baypass фрагменты

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

вот мое полное редактирование на proguard-android.txt в 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

на самом деле, есть известная проблема в Android Studio: плагин Gradle не распространяет debug / release на зависимости. Это, кажется, происходит в студии, 1.4 и 1.5 по крайней мере.

когда приложение компилируется в debug, его модули фактически компилируются в release. Вот почему proguard может быть включен в debug.

Я рекомендую этот ответ это сработало для меня.

У меня была проблема с попыткой отладки кода Котлина. Отладчик не останавливался ни в одной из точек останова. Оказывается, это была проблема с мгновенный запуск. Я удалил все каталоги сборки из моего проекта, а затем удалил приложение после этого я отключил мгновенный запуск.

отключить мгновенный запуск на Файл > Настройки > сборка, выполнение, развертывание > мгновенный запуск > Снимите Флажок Включить Мгновенный Запуск