Не удается запустить инструментальные тесты библиотеки на старых устройствах.

На старых устройствах (я тестировал v10 и 15) я не могу установить сборку отладочного приложения без использования ProGuard из-за этой проблемы: Не удается загрузить приложение Android на устройство (устаревшие файлы jar)

Временное использование ProGuard для отладочной сборки с параметрами -dontobfuscate и неявным сжатием уменьшает количество методов и позволяет запускать приложение на этих устройствах. В настоящее время я не нашел другого решения.

Та же проблема возникает при попытке запустить инструментальные тесты моей библиотеки на старых устройствах. Чтобы разрешить сжатие кода отдельно для этой библиотеки, я изменил его build.gradle:

apply plugin: 'com.android.library'
...
android {
    ..
    buildTypes {
        debug {
            minifyEnabled true
            shrinkResources false
            testProguardFile 'proguard-rules.pro'
            // or testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        ...
    }
}

(Подсказка: сборка отладки библиотеки обычно не имеет значения для всех сборок, кроме инструментальных тестов, потому что Android всегда использует сборки выпуска, если библиотека собирается как зависимость.)

Выполняя инструментальный тест моей библиотеки на эмуляторе (v15), я получаю следующие виды ошибок:

Error:(19, 33) error: package my.proj....Config does not exist
Error:(18, 31) error: cannot find symbol variable ClassName

Он не находит никаких символов исходного набора по умолчанию самой библиотеки. Это происходит только с minifyEnabled true. Как это может произойти?


person Andi    schedule 23.08.2018    source источник