Запустите Debbuger в Android Studio с включенной Proguard

Я хочу запустить отладчик в Android, но моя проблема в сборке отладки, на которой я работаю. Причиной этого является глупый лимит метода 65К. Я включил Proguard, чтобы помочь с сокращением методов. Это возвращает меня к методам 43K, но теперь в IDE я не могу отладить пошаговое выполнение кода, так как все точки останова в IDE превращаются в красные X с ошибкой, говоря о недоступном коде. Если я закрываю отладчик, точка останова возвращается в нормальное состояние. Что-то, что мне нужно сделать в Proguard сборки Gradle, чтобы заставить это работать, или я просто шланг?

buildTypes {
    debug {
        debuggable true
        minifyEnabled  true
        shrinkResources false
        zipAlignEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
        signingConfig signingConfigs.debug
    }
    release {
        minifyEnabled  true
        shrinkResources true
        signingConfig signingConfigs.release
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-samsung.txt'
    }
}

1 ответ

Решение

Ваша конфигурация ProGuard, вероятно, пропускает некоторые пункты.

Я думаю, вам нужно это:

-keepattributes SourceFile,LineNumberTable

Он сохранит (как следует из названия) имя исходных файлов и таблицу номеров строк. На самом деле, это предложение следует использовать и для выпуска, потому что вы не можете однозначно деобфусцировать трассировки стека без него.

И для отладки хорошо иметь это дополнительное предложение:

-keepattributes LocalVariableTable,LocalVariableTypeTable

Это сохранит имена локальных переменных.

В качестве альтернативы, вы можете рассмотреть возможность использования этих предложений (вместо или помимо предыдущих предложений) для отладки:

-dontoptimize
-dontobfuscate
Другие вопросы по тегам