Проблема с настройкой обфускации Android Proguard

У меня возникли проблемы с созданием запутанного, сжатого или оптимизированного APK для моего приложения Android (Java). Поскольку я новичок в proguard, я сначала пытаюсь создать apk с базовой конфигурацией, я еще ничего не добавлял в proguard-rules.pro, и все, что я сделал до сих пор, это установил для minifyEnabled значение true следующим образом:

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

Поэтому, когда я запускаю приложение на устройстве-эмуляторе, процесс сборки проходит успешно, APK становится очень маленьким, он не запускается на устройстве должным образом, но я думаю, это ожидаемо, поскольку я не добавлял никаких правил в правила proguard. про файл. Однако возникает проблема, когда я пытаюсь вручную собрать APK. Я получаю следующую ошибку:

Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in missing_rules.txt.

Поэтому я добавляю правило в файл proguard-rules.pro, который теперь выглядит так:

-dontwarn org.kxml2.io.KXmlParser,org.kxml2.io.KXmlSerializer

Но когда я пытаюсь собрать его снова, я получаю ту же ошибку с тем же правилом в файле Missing_rules.txt.

Более того, теперь я нашел APK, созданный для устройства-эмулятора, и хотя теперь он намного меньше, когда я открываю его с помощью анализатора APK, я все равно могу найти свои собственные классы в виде обычного текста вместе с их методами и всем остальным внутри. Я думал, обфускация включена по умолчанию? В чем может быть причина обеих проблем? Есть ли где-нибудь подробное руководство по правильной настройке? Я довольно много искал в Интернете, но источники довольно устарели, и пока не удалось найти работающее решение. Я использую Android Studio 2023.3.1, AGP 8.2.2 и Gradle 8.2.

0
0
153
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема с отсутствующими классами и Missing_rules.txt была исправлена ​​после того, как я обновил библиотеки androidx.test.runner и androidx.test.rules до версий 1.5.2 и 1.5.0 соответственно.

Проблема с тем, что код не был запутан, заключалась в том, что мне пришлось использовать действие «Создать подписанный пакет/APK». До сих пор я пробовал только «Build Bundles/APK». По сути, когда я создаю «релизный» APK, он запутывается и все такое.

Другие вопросы по теме