У меня возникли проблемы с созданием запутанного, сжатого или оптимизированного 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.
Проблема с отсутствующими классами и Missing_rules.txt была исправлена после того, как я обновил библиотеки androidx.test.runner и androidx.test.rules до версий 1.5.2 и 1.5.0 соответственно.
Проблема с тем, что код не был запутан, заключалась в том, что мне пришлось использовать действие «Создать подписанный пакет/APK». До сих пор я пробовал только «Build Bundles/APK». По сути, когда я создаю «релизный» APK, он запутывается и все такое.