Android Studio ProGuard не запускается
В последние несколько дней я переключился с Eclipse на Android Studio и получил больше всего работы. Однако, когда я создаю подписанный APK, кажется, что ProGuard никогда не запускается.
Я использую Мастер создания подписей APK, выбрав "Запустить ProGuard" и указав мой файл proguard.cfg в качестве файла конфигурации. Процесс сборки выполняется без ошибок и генерирует функциональный apk, но apk на 65% больше, чем тот, который генерируется Eclipse. Когда я создаю apk через Android Studio APK Wizard и не выбираю "Run Proguard", полученный apk имеет тот же размер, что и ProGuard. Файлы map.txt, seeds.txt или usage.txt не создаются нигде в моей директории проектов. Я попытался добавить
buildTypes {
release {
runProguard true
proguardFile file('proguard.cfg')
proguardFile getDefaultProguardFile('project-android.txt')
}
}
и изменения в файле build.gradle, но это также не повлияло.
Это происходит на Android Studio 0.2.0, хотя я видел такое же поведение на 0.1.9. Я работаю над Windows 7.
Может ли кто-нибудь сказать мне, что может быть? Я был бы рад, если бы мог найти журналы, которые ProGuard должен генерировать.
Ответы
Ответ 1
К счастью, я нашел решение. Проблема заключалась в том, что перед созданием подписанного apk я изменил имя пакета в AndroidManifest, чтобы перезаписать конкретную сборку в Google Play Store. Однако это изменение имени пакета не переработало все соответствующее имя "import" package.R; " строк по всему коду. Сегодня, после повторного импорта проекта, он больше не будет строить из-за ошибок, пытающихся импортировать R. Как только я изменил все строки импорта, не только мой проект был построен правильно, но и экспорт подписанного apk правильно запускал ProGuard.
Я предполагаю, что Android Studio каким-то образом кэшировала строки "import R", и когда ProGuard пыталась запустить ее, у нее не было этих кешированных значений, а затем разбился. Почему для меня не было ошибок, я не знаю.
Ответ 2
Просто обновите свой build.gradle
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
Подробнее Ссылка.
Надеюсь, это поможет вам.
Ответ 3
**in new Gradle system**
BuildType.runProguard -> minifyEnabled
BuildType.zipAlign -> zipAlignEnabled
BuildType.jniDebugBuild -> jniDebuggable
BuildType.renderscriptDebug -> renderscriptDebuggable
ProductFlavor.renderscriptSupportMode -> renderscriptSupportModeEnabled
ProductFlavor.renderscriptNdkMode -> renderscriptNdkModeEnabled
или посетите
http://tools.android.com/tech-docs/new-build-system